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 cookielib 登录人人网的实现代码
Dec 19 Python
python的id()函数介绍
Feb 10 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
Python面向对象之反射/自省机制实例分析
Aug 24 Python
python scrapy爬虫代码及填坑
Aug 12 Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 Python
django创建简单的页面响应实例教程
Sep 06 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
Python 创建守护进程的示例
Sep 29 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
python3 下载网络图片代码实例
2019/08/27 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
酒店拾金不昧表扬信
2014/01/18 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
庆六一活动总结
2014/08/29 职场文书
忠诚教育心得体会
2014/09/03 职场文书
开会通知短信大全
2015/04/20 职场文书
辩护词范文大全
2015/05/21 职场文书
python实现简单倒计时功能
2021/04/21 Python
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技