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+selenium+autoit实现文件上传功能
Aug 23 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
Python中Threading用法详解
Dec 27 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
如何解决安装python3.6.1失败
Jul 01 Python
Django --Xadmin 判断登录者身份实例
Jul 03 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
python实现图片素描效果
Sep 26 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
Python Socket多线程并发原理及实现
Dec 11 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
博士208HAF收音机实习报告
2021/03/02 无线电
php购物网站支付paypal使用方法
2010/11/28 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
python读写二进制文件的方法
2015/05/09 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
python 自动去除空行的实例
2018/07/24 Python
Pytorch的mean和std调查实例
2020/01/02 Python
Pycharm修改python路径过程图解
2020/05/22 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
Python 代码调试技巧示例代码
2020/08/11 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
行政助理求职自荐信
2013/10/26 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
暑期培训班策划方案
2014/08/26 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL