当前位置:首页 > 编程笔记 > 正文
已解决

【python学习】基础篇-常用模块-pickle模块:序列化和反序列化

来自网友在路上 166866提问 提问时间:2023-11-21 17:50:41阅读次数: 66

最佳答案 问答题库668位专家为你答疑解惑

pickle模块是Python标准库中用于序列化和反序列化的模块。通过pickle模块,可以将Python对象转换为字节流(序列化),也可以将字节流恢复为Python对象(反序列化)。

以下是pickle模块的一些常用函数:

  1. 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)
  1. 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)
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【python学习】基础篇-常用模块-pickle模块:序列化和反序列化":http://eshow365.cn/6-41423-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!