使用 Pickle 序列化和反序列化对象
pickle
模块实现了一种算法,用于将任意 Python 对象转换为一系列字节。此过程也称为序列化对象。然后可以发送或存储表示对象的字节流,并且稍后重建该字节流以创建具有相同特征的新对象。
对于最简单的代码,我们使用 dump()
和 load()
函数。
序列化对象
import pickle
# An arbitrary collection of objects supported by pickle.
data = {
'a': [1, 2.0, 3, 4+6j],
'b': ("character string", b"byte string"),
'c': {None, True, False}
}
with open('data.pickle', 'wb') as f:
# Pickle the 'data' dictionary using the highest protocol available.
pickle.dump(data, f, pickle.HIGHEST_PROTOCOL)
要反序列化对象
import pickle
with open('data.pickle', 'rb') as f:
# The protocol version used is detected automatically, so we do not
# have to specify it.
data = pickle.load(f)
使用 pickle 和 byte 对象
使用 dumps
和 loads
函数也可以序列化和反序列化字节对象,这相当于 dump
和 load
。
serialized_data = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
# type(serialized_data) is bytes
deserialized_data = pickle.loads(serialized_data)
# deserialized_data == data