Python pickle模块常用方法代码实例


Posted in Python onOctober 10, 2020

用于序列化的两个模块

  • json:用于字符串和Python数据类型间进行转换

  • pickle: 用于python特有的类型和python的数据类型间进行转换

  • json提供四个功能:dumps,dump,loads,load

  • pickle提供四个功能:dumps,dump,loads,load

pickle可以存储什么类型的数据呢?

  • 所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。
  • 由任何原生类型组成的列表,元组,字典和集合。
  • 函数,类,类的实例

pickle模块中常用的方法有:

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

必填参数obj表示将要封装的对象

必填参数file表示obj要写入的文件对象,file必须以二进制可写模式打开,即“wb”

可选参数protocol表示告知pickler使用的协议,支持的协议有0,1,2,3,默认的协议是添加在Python 3中的协议3。

 

  • Protocol version 0 is the original “human-readable” protocol and is backwards compatible with earlier versions of Python.
  • Protocol version 1 is an old binary format which is also compatible with earlier versions of Python.
  • Protocol version 2 was introduced in Python 2.3. It provides much more efficient pickling of new-style classes. Refer to PEP 307 for information about improvements brought by protocol 2.
  • Protocol version 3 was added in Python 3.0. It has explicit support for bytes objects and cannot be unpickled by Python 2.x. This is the default protocol, and the recommended protocol when compatibility with other Python 3 versions is required.
  • Protocol version 4 was added in Python 3.4. It adds support for very large objects, pickling more kinds of objects, and some data format optimizations. Refer to PEP 3154 for information about improvements brought by protocol 4.

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

应用:

# dumps功能
import pickle
data = ['aa', 'bb', 'cc']
# dumps 将数据通过特殊的形式转换为只有python语言认识的字符串
p_str = pickle.dumps(data)
print(p_str)      7 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']
# dump功能
# dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
with open('D:/tmp.pk', 'w') as f:
  pickle.dump(data, f)
# load功能
# load 从数据文件中读取数据,并转换为python的数据结构
with open('D:/tmp.pk', 'r') as f:
  data = pickle.load(f)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中声明只包含一个元素的元组数据方法
Aug 25 Python
python中使用zip函数出现错误的原因
Sep 28 Python
Django forms组件的使用教程
Oct 08 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
Python pip替换为阿里源的方法步骤
Jul 02 Python
python提取照片坐标信息的实例代码
Aug 14 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
Django前后端分离csrf token获取方式
Dec 25 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 Python
Python3.9新特性详解
Oct 10 #Python
Python random模块的使用示例
Oct 10 #Python
python 装饰器的使用示例
Oct 10 #Python
python使用bs4爬取boss直聘静态页面
Oct 10 #Python
通过案例解析python鸭子类型相关原理
Oct 10 #Python
通过实例解析python subprocess模块原理及用法
Oct 10 #Python
如何使用python自带IDLE的几种方法
Oct 10 #Python
You might like
聊天室php&mysql(二)
2006/10/09 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
js压缩利器
2007/02/20 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
python复制文件的方法实例详解
2015/05/22 Python
Python实现二分查找算法实例
2015/05/26 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
婚礼主持结束词
2014/03/13 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
起诉书范文
2015/05/20 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers