Python3 pickle模块序列化与反序列化详解

七月
七月
发布时间:2026-10-14| 6人浏览过
原创

本文详细介绍Python3中pickle模块的核心用法,涵盖dump、load、dumps和loads四个关键函数的区别与应用场景。通过具体代码示例,演示如何将Python对象序列化为二进制格式并保存至文件或内存,以及如何从文件恢复原始对象,适用于需要持久化存储或网络传输Python数据结构的开发场景。

pickle模块概述

在Python3中,pickle模块(对应Python2中的cPickle模块)提供了类似Java的序列化和反序列化功能,用于处理对象的状态保存与恢复。

其基本使用方式如下所示:


import pickle
pickle.dump(obj,f)
pickle.dumps(obj,f)
pickle.load(f)
pickle.loads(f)

利用pickle模块,开发者可以直接将Python对象保存至文件,无需手动将其转换为字符串或处理底层二进制文件写入细节。该模块会生成一种Python专用的二进制格式,开发者只需提供合法的文件句柄,即可自动完成对象的读写操作,极大简化了文件处理流程。

核心函数dump与load

pickle模块主要包含两个核心函数:dump()和load()。

dump()函数接收文件句柄和数据对象作为参数,将数据对象以特定格式保存至指定文件。当使用load()函数从文件中读取已保存的对象时,pickle模块会自动识别格式并将其还原为原始的Python对象结构。

内存序列化dumps与loads

dumps()函数执行与dump() 函数相同的序列化逻辑。不同之处在于,dumps()不接受流对象,也不将数据保存至磁盘文件,而是直接返回序列化后的二进制数据。

loads()函数执行与load()函数相同的反序列化操作。它不接受流对象,也不从文件读取数据,而是接收包含序列化数据的str或bytes对象,直接返回还原后的Python对象。

代码示例

具体使用示例如下:


# -*- coding:utf-8 -*-
import pickle
obj = 123, "abcdef", ["ac", 123], {"key": "value", "key1": "value1"}
print(obj)
# 序列化到文件
with open(r"F:\pycodes\ML\a.txt", "wb") as f:
 pickle.dump(obj, f)
with open(r"F:\\pycodes\\ML\\a.txt", "rb") as f:
 print(pickle.load(f))# 输出:(123, 'abcdef', ['ac', 123], {'key': 'value', 'key1': 'value1'})
# 序列化到内存(字符串格式保存),然后对象可以以任何方式处理如通过网络传输
obj1 = pickle.dumps(obj)
print(type(obj1))# 输出<class 'bytes'>
print(obj1)# 输出:python专用的存储格式 b'\x80\x03(K{X\x06\x00\x00\x00abcdefq\x00]q\x01(X\x02\x00\x00\x00acq\x02K{e}q\x03(X\x03\x00\x00\x00keyq\x04X\x05\x00\x00\x00valueq\x05X\x04\x00\x00\x00key1q\x06X\x06\x00\x00\x00value1q\x07utq\x08.'
obj2 = pickle.loads(obj1)
print(type(obj2))# 输出:<class 'tuple'>
print(obj2) # 输出:(123, 'abcdef', ['ac', 123], {'key': 'value', 'key1': 'value1'})

总结

以上介绍了Python3 pickle模块的核心用法,希望能为读者提供帮助。如有任何疑问,欢迎留言交流,小编将及时回复。感谢大家对本站的支持! 若本文对您有所帮助,欢迎转载,请注明出处,谢谢!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。