与JSON不同的是pickle不是用于多种语言间的数据传输,
它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型
二进制格式
dumps(obj,[,protocol]) 将obj对象序列化为string形式,而不是存入文件中
import pickle d = {'name':'alex', 'age': 12} data = pickle.dumps(d) print(data) # b'x80x03}qx00(Xx04x00x00x00nameqx01Xx04x00x00x00alexqx02Xx03x00x00x00ageqx03Kx0cu.'
将字符串 以二进制形式保存到文件里
import pickle d = {'name':'alex', 'age': 12} with open("data.pkl", "wb") as pk: data = pickle.dump(d, pk) print(data)
pickle.load(file) 将file中的对象序列化读出
注解:从file中读取一个字符串,并将它重构为原来的python对象。
file:类文件对象,有read()和readline()接口
把文件的二进制格式 转换成Python对象格式
import pickle with open("data.pkl", "rb") as f: data = pickle.load(f) print(data) # {'name': 'alex', 'age': 12}
pickle 序列化函数
import pickle def sayhi(): pass data = pickle.dumps(sayhi) print(data) # b'x80x03c__main__ sayhi qx00.'
pickle 序列化类
import pickle class Foo(object): pass data = pickle.dumps(Foo) print(data) # b'x80x03c__main__ Foo qx00.