Python3 pickle模块使用方法详解

花开有时
花开有时
发布时间:2026-10-14 | 4人浏览过
原创

本文详细介绍Python3中pickle模块的使用方法,涵盖dumps、dump、loads、load四个核心功能。解析其支持的数据类型范围,包括原生类型、复合结构及自定义类实例。同时说明各方法的参数要求、协议版本差异,并列举PickleError、PicklingError和UnPicklingError三种异常类型及代码示例。

pickle模块具备以下主要特性:

首先,该模块仅适用于Python环境,且仅支持Python的基本数据类型。

其次,它能够处理复杂的序列化场景,例如自定义类的方法或游戏存档等复杂数据结构。

此外,序列化过程针对的是整个序列对象本身,而非其在内存中的地址。

pickle模块主要用于在Python特有类型与标准Python数据类型之间进行转换,提供了dumps、dump、loads和load四个核心功能。

pickle模块能够存储的数据类型包括:

所有Python支持的原生数据类型,具体包括布尔值、整数、浮点数、复数、字符串、字节以及None。

由上述原生类型构成的列表、元组、字典和集合等复合结构。

此外,还包括函数、类定义以及类的实例对象。

pickle模块中常用的操作方法如下:

1. pickle.dump(obj, file, protocol=None,)

参数obj为必填项,表示需要被封装(序列化)的对象。

参数file为必填项,指代接收序列化数据的文件对象。该文件必须以二进制可写模式打开,即模式参数设置为“wb”。

参数protocol为可选项,用于指定使用的序列化协议。支持的协议版本包括0、1、2和3,Python 3中默认的协议版本为3。

2. pickle.load(file,*,fix_imports=True, encoding="ASCII", errors="strict")

参数file为必填项,文件必须以二进制可读模式打开,即模式参数设置为“rb”。其余参数均为可选参数。

3. pickle.dumps(obj):该方法将对象封装为字节对象形式并返回,无需写入文件。

4. pickle.loads(bytes_object):该方法从字节对象中读取并还原被封装的对象,最终返回该对象。

pickle模块涉及三种异常类型:

1. PickleError:封装和反序列化过程中出现的异常类,它是Exception的子类。

2. PicklingError:当遇到无法被封装的对象时引发的异常,继承自PickleError。

3. UnPicklingError:在对象反序列化(拆封)过程中出现的异常,同样继承自PickleError。

以下是pickle模块的代码使用实例:

dumps功能演示

dumps函数负责将数据通过特定格式转换为Python内部识别的字节字符串。


import pickle
data = ['aa', 'bb', 'cc']  
# dumps 将数据通过特殊的形式转换为只有python语言认识的字符串
p_str = pickle.dumps(data)
print(p_str)

运行结果如下:


b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.

loads功能演示

loads函数用于将pickle产生的字节数据转换回Python的数据结构。


mes = pickle.loads(p_str)
print(mes)

最终输出结果为:


['aa', 'bb', 'cc']

如需了解更多关于Python pickle模块的信息,请参阅相关技术文档或链接。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表