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 23 Python
Python中几种导入模块的方式总结
Apr 27 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
详解python中Numpy的属性与创建矩阵
Sep 10 Python
python3+requests接口自动化session操作方法
Oct 13 Python
详解Python的循环结构知识点
May 20 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
如何在Python对Excel进行读取
Jun 04 Python
解决keras backend 越跑越慢问题
Jun 18 Python
python re的findall和finditer的区别详解
Nov 15 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 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
国内咖啡文化
2021/03/03 咖啡文化
在php MYSQL中插入当前时间
2008/04/06 PHP
php at(@)符号的用法简介
2009/07/11 PHP
php 一元分词算法
2009/11/30 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
Node.js简单入门前传
2017/08/21 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
简单理解Python中基于生成器的状态机
2015/04/13 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
Python3并发写文件与Python对比
2019/11/20 Python
python读写文件write和flush的实现方式
2020/02/21 Python
python集合能干吗
2020/07/19 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
贝佳斯官方网站:Borghese
2020/05/08 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
配置管理计划的主要内容有哪些
2014/06/20 面试题
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
《去年的树》教学反思
2014/04/11 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
通知的写法
2015/04/23 职场文书
高一数学教学反思
2016/02/18 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python