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的微信聊天机器人示例代码
Mar 03 Python
解决python 输出是省略号的问题
Apr 19 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
Sep 14 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
python实现windows壁纸定期更换功能
Jan 21 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
python使用bs4爬取boss直聘静态页面
Oct 10 Python
Python如何使用logging为Flask增加logid
Mar 30 Python
python读取mnist数据集方法案例详解
Sep 04 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 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的类 功能齐全的发送邮件类
2006/10/09 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
php查询及多条件查询
2017/02/26 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
XML的代替者----JSON
2007/07/21 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
Python中字符编码简介、方法及使用建议
2015/01/08 Python
Zabbix实现微信报警功能
2016/10/09 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
Python定时器线程池原理详解
2020/02/26 Python
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
事业单位个人应聘自荐信
2013/09/21 职场文书
劳资协议书范本
2014/04/23 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书