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实现socket端口重定向示例
Feb 10 Python
使用graphics.py实现2048小游戏
Mar 10 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
Python yield 使用方法浅析
May 20 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
flask框架视图函数用法示例
Jul 19 Python
python实现AES加密与解密
Mar 28 Python
python DataFrame转dict字典过程详解
Dec 26 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
如何使用Pytorch搭建模型
Oct 26 Python
去除python中的字符串空格的简单方法
Dec 22 Python
python 写一个水果忍者游戏
Jan 13 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
php&java(二)
2006/10/09 PHP
用缓存实现静态页面的测试
2006/12/06 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
php基本函数汇总
2015/07/09 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
python实现聚类算法原理
2018/02/12 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
PyQt5实现登录页面
2020/05/30 Python
Python创建临时文件和文件夹
2020/08/05 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
Linux开机引导的步骤是什么
2014/02/26 面试题
告诉你怎样写创业计划书
2014/01/27 职场文书
合伙协议书范本
2014/04/21 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
库房管理员岗位职责
2015/02/12 职场文书
前台岗位职责
2015/02/13 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server