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 相关文章推荐
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
Python正则表达式匹配中文用法示例
Jan 17 Python
Python实现登录接口的示例代码
Jul 21 Python
Python Json序列化与反序列化的示例
Jan 31 Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
python素数筛选法浅析
Mar 19 Python
Python实现的文本对比报告生成工具示例
May 22 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
关于python的缩进规则的知识点详解
Jun 22 Python
Python爬取网页信息的示例
Sep 24 Python
python 实现有道翻译功能
Feb 26 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
PHP基础知识回顾
2012/08/16 PHP
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
Python算法之栈(stack)的实现
2014/08/18 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
python中format函数如何使用
2020/06/22 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
python tkinter实现连连看游戏
2020/11/16 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
计算机专业毕业生自我鉴定
2014/01/16 职场文书
企业总经理岗位职责
2014/02/13 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
预备党员转正党小组意见
2015/06/01 职场文书