pickle用于序列化和反序列化:
- 序列化:将python对象转换为字节流
- 反序列化:将字节流转换为python对象
import pickle
str = 'hello world'
list = [1,2,3,4,5]
dict = {'name':'dcm','age':12,'height':170}
# 序列化
# pickle.dump(obj,f,protocol),protocol是传输协议,可以取值为0,1,2,3,默认为3
f = open('test.pkl','wb')
pickle.dump(str,f) # protocol一般不用指定
pickle.dump(list,f)
pickle.dump(dict,f)
f.close()
# 反序列化
# 反序列化中的顺序和序列化中顺序一样, 遵循先进先出的规律
f1 = open('test.pkl','rb') # 因为上面是序列化为二进制文件,所有我们要以rb方式读取
str = pickle.load(f1)
print(str)
list = pickle.load(f1)
print(list)
dict = pickle.load(f1)
print(dict)
f1.close()
注意:文件对象不能序列化,也就是不能pickle.dump(open(file, ‘r’), f)