Python3 使用pickle进行序列化与反序列化
2017-12-09 22:06:01
•
阅读
打赏
本文介绍pickle序列化与反序列化的方法,欢迎大家的学习。
python的pickle模块提供了一个简单的持久化存储功能,能将数据对象(列表、字典、集合、类等)以文件的形式存放在磁盘上。
python的pickle模块实现了基本的数据序列化和反序列化。
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
基本函数
pickle.dump(obj, file, [,protocol])
参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。
protocol的值还可以是1或2,表示以二进制的形式序列化。
对 file 以读取的形式打开:
s = pickle.load(file)
import pickle
d = dict(name= "aa", nu= 1, language= "python")
a= pickle.dumps(d)
# b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X
# \x02\x00\x00\x00aaq\x02X\x02\x00\x00\x00nuq
# \x03K\x01X\x08\x00\x00\x00languageq\x04X\x06
# \x00\x00\x00pythonq\x05u.'
print(a)
f = open('aa.txt', 'wb')
pickle.dump(d, f)
f.close()
文件内容:

import pickle
# 使用pickle模块将数据对象保存到文件
data1 = {'a': [1, 2.0, 3, 4+6j],
'b': ('python', u'Unicode python'),
'c': None
}
list = [1, 2, 3]
list.append(list)
output = open('aa.txt', 'wb')
# 默认protocol为0
pickle.dump(data1, output)
# protocol为-1
pickle.dump(list, output, -1)
output.close()
将对象从磁盘文件读到内存时,先把内容读到一个bytes,再用pickle.loads()方法反序列化出对象,
或直接用pickle.load()方法从一个file-like Object中反序列化出对象
import pickle
f = open('aa.txt', 'rb')
s = pickle.load(f)
f.close()
# 输出 {'name': 'aa', 'nu': 1, 'language': 'python'}
print(s)
import pprint, pickle
#使用pickle模块从文件中重构python对象
f = open('aa.txt', 'rb')
a = pickle.load(f)
pprint.pprint(a)
a2 = pickle.load(f)
pprint.pprint(a2)
f.close()
输出:


相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型