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 datetime时间格式化去掉前导0
Jul 31 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
Matlab中plot基本用法的具体使用
Jul 17 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
python 爬虫网页登陆的简单实现
Nov 30 Python
python中最小二乘法详细讲解
Feb 19 Python
在pycharm中无法import所安装的库解决方案
May 31 Python
python数字图像处理实现图像的形变与缩放
Jun 28 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如何解决网站大流量与高并发的问题
2011/06/25 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
jquery validate使用攻略 第四步
2010/07/01 Javascript
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
JavaScript闭包和范围实例详解
2016/12/19 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
MySQL最常见的操作语句小结
2015/05/07 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
python实现堆排序的实例讲解
2020/02/21 Python
python 等差数列末项计算方式
2020/05/03 Python
python opencv实现简易画图板
2020/08/27 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
4S店售后客服自我评价
2014/04/09 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
同学聚会开幕词
2019/04/02 职场文书
女性励志书籍推荐
2019/08/19 职场文书