pickle模块是Python标准库中用于序列化和反序列化的模块。通过pickle模块,可以将Python对象转换为字节流(序列化),也可以将字节流恢复为Python对象(反序列化)。
以下是pickle模块的一些常用函数:
- dump(obj, file, protocol=None, *, fix_imports=True)
将Python对象obj序列化并写入文件file中。
可以设置协议版本protocol,默认为最高版本。
fix_imports参数表示是否修复Python 2中的导入问题。
import pickledata = {'a': 1, 'b': 2, 'c': 3}
with open('data.pkl', 'wb') as f:pickle.dump(data, f)
- load(file, *, fix_imports=True, encoding=‘ASCII’, errors=‘strict’)
从文件file中读取字节流并反序列化为Python对象。
可以设置fix_imports参数表示是否修复Python 2中的导入问题。
encoding和errors参数分别表示文件编码和错误处理方式。
import picklewith open('data.pkl', 'rb') as f:data = pickle.load(f)print(data)
3.dumps(obj, protocol=None, *, fix_imports=True)
将Python对象obj序列化为字节流。
可以设置协议版本protocol,默认为最高版本。
fix_imports参数表示是否修复Python 2中的导入问题。
import pickledata = {'a': 1, 'b': 2, 'c': 3}
serialized_data = pickle.dumps(data)
print(serialized_data)
4.loads(s, *, encoding=‘ASCII’, errors=‘strict’)
将字节流s反序列化为Python对象。
可以设置encoding和errors参数分别表示字节流编码和错误处理方式。
import pickleserialized_data = b'\x80\x04\x95\x0e\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x05key\x94\x8c\x05value\x94u.'
data = pickle.loads(serialized_data)
print(data)