pickle模块
pickle
先看一下下边使用pickle模块的例子:
import pickle
class Person:
def __init__(self,n,a):
self.name=n
self.age=a
def show(self):
print self.name+"_"+str(self.age)
aa = Person("JGood", 2)
aa.show()
f=open('d:\\p.txt','w')
pickle.dump(aa,f,0)#序列化存起来
f.close()
#del Person
f=open('d:\\p.txt','r')
bb=pickle.load(f)#反序列化
f.close()
bb.show()
输出结果:
JGood_2
JGood_2
- 如果不注释掉del Person的话,那么会报错当前模块找不到类的定义了。
- 在load(file)的时候,要让python能够找到类的定义,否则会报错
那么,pickle 模块是用来干什么的呢?
- python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
基本接口
1 序列化对象
pickle.dump(obj, file[, protocol])
- 序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。
2 反序列化对象。将文件中的数据解析为一个Python对象。
pickle.load(file)