Python 的 pickle
模块用于实现二进制序列化和反序列化。一个对象可以被序列化到文件中,然后可以从文件中恢复。
(1)pickle.dump()
-
定义:
pickle.dump(obj, file, protocol=None, fix_imports=True, buffer_callback=None)
将 Python 对象序列化并写入到文件对象。 -
参数:
obj
(必需,任意 Python 对象): 要被序列化的对象。file
(必需,file object): 一个具有 write() 方法的文件类对象,pickle 数据将被写入到这个对象中。protocol
(可选,整数): 指定 pickle 使用的协议版本,可以是 0 到最高支持的协议。默认是默认的协议。fix_imports
(可选,布尔值): 如果为 True,并且protocol
小于 3,pickle 将尝试将新的 Python 3.x 名称映射到 Python 2.x 中的模块名称。buffer_callback
(可选,callable): 用于优化大型对象序列化的回调函数。
-
返回值: 无返回值。
-
用途: 将 Python 对象序列化保存到文件中。
-
代码示例:
import pickle # 假设我们有一个字典对象 data = {'a': [1, 2.0, 3, 4+6j], 'b': ('string', u'Unicode string'), 'c': None} # 打开一个文件用于写入 with open('data.pickle', 'wb') as f: # 将字典对象序列化并保存到文件 pickle.dump(data, f)
(2)pickle.load()
-
定义:
pickle.load(file, *, fix_imports=True, encoding='ASCII', errors='strict', buffers=None)
从文件对象中读取序列化的数据,并将其反序列化为 Python 对象。 -
参数:
file
(必需,file object): 一个具有 read() 和 readline() 方法的文件类对象,将从该对象中读取并反序列化 pickle 数据。fix_imports
(可选,布尔值): 是否为了兼容 Python 2.x 修复导入问题。encoding
(可选,字符串): 用于解码 8 位字符串的编码。errors
(可选,字符串): 设置如何处理编解码错误。buffers
(可选,列表): 包含用于优化序列化的缓冲区的列表。
-
返回值: 反序列化后的 Python 对象。
-
用途: 从文件中恢复 Python 对象。
-
代码示例:
import pickle # 打开含有序列化数据的文件 with open('data.pickle', 'rb') as f: # 读取并反序列化数据 data_loaded = pickle.load(f) print(data_loaded)