📅  最后修改于: 2023-12-03 15:07:54.647000             🧑  作者: Mango
在Python中,pickle模块允许我们将Python对象序列化为字节流,然后将对象存储在文件中或在网络上传送,然后再将其反序列化回Python对象。
使用pickle.dump()函数,可以将Python对象保存在文件中。
import pickle
# 保存一个对象
mylist = [1, 2, 3, 4, 5]
with open('data.pkl', 'wb') as f:
pickle.dump(mylist, f)
上面的代码将一个列表对象保存到了data.pkl文件中。参数'wb'代表以二进制写入的方式打开文件。在with语句块结束时,文件自动关闭。
使用pickle.load()函数,可以从文件中读取Python对象,反序列化为Python对象。
import pickle
# 从文件中读取一个对象
with open('data.pkl', 'rb') as f:
mylist = pickle.load(f)
print(mylist)
上面的代码从data.pkl文件中读取对象,并将其反序列化成Python对象,最终输出mylist的值。
使用pickle.dumps()函数,可以将Python对象序列化成字节流。
import pickle
# 将对象序列化成字节流
mylist = [1, 2, 3, 4, 5]
data = pickle.dumps(mylist)
print(data)
上面的代码将mylist对象序列化成字节流,并将字节流输出到屏幕上。
使用pickle.loads()函数,可以将字节流反序列化为Python对象。
import pickle
# 将字节流反序列化为对象
data = b'\x80\x04\x95\x0f\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04K\x05e.'
mylist = pickle.loads(data)
print(mylist)
上面的代码将字节流data反序列化为Python对象,并最终输出mylist的值。
pickle模块提供了非常方便的对象序列化和反序列化功能,可以将Python对象存储在文件中或传输到网络上,适用于各种场景。但是需要注意pickle有安全隐患,使用时请谨慎。