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在linux系统下获取系统内存使用情况的方法
May 11 Python
python中zip和unzip数据的方法
May 27 Python
Python中第三方库Requests库的高级用法详解
Mar 12 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
May 21 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
python3图片文件批量重命名处理
Oct 31 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
Python计算IV值的示例讲解
Feb 28 Python
Python如何使用input函数获取输入
Aug 06 Python
python使用PySimpleGUI设置进度条及控件使用
Jun 10 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中的动态调用实例分析
2015/01/07 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
Div Select挡住的解决办法
2008/08/07 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
django用户登录验证的完整示例代码
2019/07/21 Python
wxPython实现带颜色的进度条
2019/11/19 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
成立公司计划书
2014/05/07 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
趣味运动会标语口号
2015/12/26 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python