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实现国外赌场热门游戏Craps(双骰子)
Mar 31 Python
为Python的web框架编写前端模版的教程
Apr 30 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
Python简单获取自身外网IP的方法
Sep 18 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
python开发游戏的前期准备
May 05 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
执行Python程序时模块报错问题
Mar 26 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发电子邮件
2006/10/09 PHP
BBS(php & mysql)完整版(七)
2006/10/09 PHP
优化PHP代码的53条建议
2008/03/27 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
表格 隔行换色升级版
2009/11/07 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python内置的字符串处理函数整理
2013/01/29 Python
python 实现list或string按指定分段
2019/12/25 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
农业大学毕业生的个人自我评价
2013/10/11 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
伊索寓言教学反思
2014/05/01 职场文书
病媒生物防治方案
2014/05/13 职场文书
理发店策划方案
2014/06/05 职场文书
实习介绍信模板
2015/01/30 职场文书
教师节班会主持词
2015/07/06 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python