对python pickle的理解
python 提供了pickle模块,能将对象进行序列化,将对象以文件形式存放在磁盘。
几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化。但是序列化后的数据可读性很差。
pickle最主要的两个函数:
pickle.dump(obj, file[, protocol]) # 序列化对象,并将结果数据流写入到文件对象中。
# 参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。
pickle.load(file) # 反序列化对象。将文件中的数据解析为一个Python对象。
# 每取一次对象,就要load一次
dump() 和 pickle() 成对存在
其中要注意的是,在load(file)的时候,要让python能够找到类的定义,否则会报错
例子如下:
1 import pickle 2 3 info_1 = {'admin': 'admin'} 4 info_2 = {'user': 'user'} 5 6 with open('test.txt', 'wb') as urs_file: 7 pickle.dump(info_1, urs_file) 8 pickle.dump(info_2, urs_file) 9 10 with open('test.txt', 'rb') as urs_file: 11 while True: 12 try: 13 admin = pickle.load(urs_file) 14 print(admin) 15 except EOFError: 16 break
运行结果:
{'admin': 'admin'} {'user': 'user'}