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入门篇之函数
Oct 20 Python
Python中基础的socket编程实战攻略
Jun 01 Python
python基础教程之分支、循环简单用法
Jun 16 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
python的concat等多种用法详解
Nov 28 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
Django 创建新App及其常用命令的实现方法
Aug 04 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
python 遗传算法求函数极值的实现代码
Feb 11 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加入ftp扩展的解决方法
2013/02/07 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
浅谈php冒泡排序
2014/12/30 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
自写的一个jQuery圆角插件
2010/10/26 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
基于python生成器封装的协程类
2019/03/20 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
python使用列表的最佳方案
2020/08/12 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
三人合伙协议书范本
2014/10/29 职场文书
2014年教师工作总结
2014/11/10 职场文书
高考升学宴答谢词
2015/01/20 职场文书
2015年组织部工作总结
2015/04/03 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
汽车销售合同文本
2019/08/08 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
gojs实现蚂蚁线动画效果
2022/02/18 Javascript