zl程序教程

您现在的位置是:首页 >  Python

当前栏目

Python pickle模块:实现Python对象的持久化存储

2023-03-20 15:28:35 时间

Python中有个序列化过程叫作 pickle,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化。也就是说,pickle 可以实现 Python 对象的存储及恢复。

值得一提的是,pickle 是 python 语言的一个标准模块,安装 python 的同时就已经安装了 pickle 库,因此它不需要再单独安装,使用 import 将其导入到程序中,就可以直接使用。

pickle 模块提供了以下 4 个函数供我们使用:

  1. dumps():将 Python 中的对象序列化成二进制对象,并返回;
  2. loads():读取给定的二进制对象数据,并将其转换为 Python 对象;
  3. dump():将 Python 中的对象序列化成二进制对象,并写入文件;
  4. load():读取指定的序列化数据文件,并返回对象。

pickle.dumps()函数

此函数用于将 Python 对象转为二进制对象,其语法格式如下:

dumps(obj, protocol=None, *, fix_imports=True)

此格式中各个参数的含义为:

  • obj:要转换的 Python 对象;
  • protocol:pickle 的转码协议,取值为 0、1、2、3、4,其中 0、1、2 对应 Python 早期的版本,3 和 4 则对应 Python 3.x 版本及之后的版本。未指定情况下,默认为 3。
  • 其它参数:为了兼容 Python 2.x 版本而保留的参数,Python 3.x 中可以忽略。

【例 1】

import pickletup1 = ('I love Python', {1,2,3}, None)#使用 dumps() 函数将 tup1 转成 p1p1 = pickle.dumps(tup1)print(p1)

输出结果为:

b'x80x03X x00x00x00I love Pythonqx00cbuiltins set qx01]qx02(Kx01Kx02Kx03ex85qx03Rqx04Nx87qx05.'