想要将Python程序运行中得到的字符串、列表、字典等数据,长久的保存下来,而不是简单的放入内存中关机断电就丢失数据。
Pickle模块就是专门用来完成此功能的模块,它可以将对象转换为一种可以传输或存储的格式。
它实现了基本的数据序列和反序列化,
通过pickle模块的序列化操作,我们能够将程序中运行的对象信息保存到文件中去,永久存储;
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
pickle包中的常用函数(2个)
- pickle.dump(obj,file,[,protocol])
序列化对象,将对象obj保存到文件file中去。参数protocol是序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)。file表示保存到的类文件对象,file必须有write()接口,file可以是一个以'w'打开的文件或者是一个StringIO对象,也可以是任何可以实现write()接口的对象。
反序列化对象,将文件中的数据解析为一个python对象。file中有read()接口和readline()接口。
将.txt文件转为.pickle文件
import pickle
with open('frame_count_8.txt', 'r') as fr:
data = fr.read()
print(data)
with open('frame_count_8.pickle', 'wb') as fw:
pickle.dump(data, fw, pickle.HIGHEST_PROTOCOL)
with open('frame_count_8.pickle', 'rb') as fr:
data = pickle.load(fr)
print(data)