pickle提供了一种持久化功能,可以将对象序列化并保存到文件中,也可以将文件中的数据流反序列化成对象。
pickle.dump() 和 pickle.load() 是两个基本方法,分别实现序列化与反序列化。
pickle.dumps() 和 pickle.loads() 也分别实现序列化与反序列化,但是针对的是bytes形式对象,不常用。
另外,反序列化时需要注意:当前模块中需要含有类的定义,否则反序列化失败报错。
pickle.dump(obj,file,protocol)中参数protocol:默认为0(按文本方式写入),设置为1(传统二进制形式写入),设置为2(新式二进制形式写入)。
#-----------------------------pickle-------------------------- import pickle class A: def __init__(self,arg): self.name = arg def show(self): print(self.name) a = A('lucy') # output:lucy a.show() # 序列化对象,载入文件 # 注意1:python中对象最好以字节流方式处理。 with open('p.txt','wb') as f: pickle.dump(a,f,1) # del A # 注意2:当前模块找不到类的注释,反序列化对象时会报错 # AttributeError: Can't get attribute 'A' on <module '__main__' from 'D:/pycharm/dongxuew/hello_world.py'> # 反序列化对象,导入程序 with open('p.txt','rb') as f: b = pickle.load(f) b.show() # output:lucy
浙公网安备 33010602011771号