Python Pickle库详解:序列化与反序列化实战

Mason
Mason
发布时间:2026-10-12| 2人浏览过
原创

本文深入解析Python标准库Pickle的序列化机制,对比其与JSON的差异,详细阐述dumps、loads、dump、load四个核心函数的用法及参数配置,包括协议版本选择与文件读写模式,帮助开发者高效实现Python对象的存储与恢复。

简介

在Python生态中,Pickle提供了一种序列化机制,支持任意Python对象与文本或二进制数据之间的相互转换。通过这一机制,开发者可以方便地实现Python对象的持久化存储以及从存储中恢复对象状态。

Pickle与JSON对比

Pickle协议与JSON(JavaScript Object Notation)存在本质区别:JSON属于文本序列化格式,输出Unicode文本(通常编码为UTF-8),而Pickle生成的是二进制序列化数据;JSON具备人类可读性,Pickle则不可读;JSON在Python生态系统外具有广泛的互操作性,而Pickle仅适用于Python环境;默认情况下,JSON仅支持Python内置类型的子集且无法处理自定义类,而Pickle能够表示大量Python类型(多数通过Python内省机制自动处理,复杂场景可通过实现特定对象API解决)。

Pickle模块的应用非常简单,主要包含四个核心方法。

  • dumps():将Python对象序列化为二进制数据,并以字节串形式返回。
  • loads():接收给定的二进制数据,并将其反序列化为对应的Python对象。
  • dump():将Python对象序列化为二进制数据,并直接写入指定文件。
  • load():读取指定的序列化数据文件,并返回反序列化后的对象。

其中,dumps和loads主要用于实现基于内存的Python对象与二进制数据之间的相互转换;而dump和load则用于实现基于文件的Python对象与二进制数据之间的相互转换。

函数详解

dumps

dumps(obj, protocol=None)
  • obj:待转换的Python对象。
  • protocol:指定Pickle的转码协议,可选值为0、1、2、3、4。其中0、1、2对应Python早期版本,3和4对应Python 3.x及更高版本。若未指定,默认值为3。
import pickle
 
dic = {"name": "lihua", "age": 30}
pe = pickle.dumps(dic)  # 将任意数据类型类型转换成二进制文件
print(pe)

loads

loads(data)

data参数表示待转换的二进制对象数据。

import pickle
 
dic = {"name": "lihua", "age": 30}
pe = pickle.dumps(dic)  # 将任意数据类型转换成二进制文件
dic1 = pickle.loads(pe)  # 将二进制文件恢复成原来的数据类型
print(dic1)

dump

dump (obj, file,protocol=None)
  • obj:待转换的Python对象。
  • file:指定写入的二进制文件路径,文件必须以“wb”(写二进制)模式打开。
  • protocol:指定Pickle的转码协议,可选值为0、1、2、3、4。其中0、1、2对应Python早期版本,3和4对应Python 3.x及更高版本。若未指定,默认值为3。
import pickle
 
dic = {"name": "lihua", "age": 30}
with open("pickle.pickle", "wb") as f:
    pickle.dump(dic, f)  # 将转换后的二进制文件存储在pickle.pickle文件里面

load

此函数与dump()对应,用于将二进制对象文件反序列化为Python对象。

load(file)

file参数表示待读取的二进制对象文件,文件必须以“rb”(读二进制)模式打开。

import pickle
 
dic = {"name": "lihua", "age": 30}
with open("pickle.pickle", "rb") as f:
    dic1 = pickle.load(f)  # 将存储的文件内容导出为python对象
 
print(dic1)

至此,关于Python中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 算法库。