当前位置: 首页 > news >正文

python pickle模块_python pickle 模块的使用

用于序列化的两个模块

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

应用:

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 # dumps功能

2 import pickle

3 data = ['aa', 'bb', 'cc']

4 # dumps 将数据通过特殊的形式转换为只有python语言认识的字符串

5 p_str = pickle.dumps(data)

6 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.

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 # loads功能

2 # loads 将pickle数据转换为python的数据结构

3 mes = pickle.loads(p_str)

4 print(mes)

5 ['aa', 'bb', 'cc']

1 # dump功能

2 # dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件

3 with open('D:/tmp.pk', 'w') as f:

4 pickle.dump(data, f)

1 # load功能

2 # load 从数据文件中读取数据,并转换为python的数据结构

3 with open('D:/tmp.pk', 'r') as f:

4 data = pickle.load(f)

相关文章:

  • python 曲线拟合参数能否为数组_Python曲线将多个参数拟合到多个数据集
  • plsql trim去不掉空格_Excel中使用TRIM与CALEN都无法清除空格与不可见字符时怎么办...
  • java日历算法分析_Java基础算法分析之一
  • ssh连接docker vscode_VScode远程连接Docker容器实现X11转发
  • linux mysql 最全安装_最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!
  • centos7镜像带mysql吗_【系列7】使用Dockerfile创建带mysql的Centos Docker镜像
  • spark mysql 环境搭建_Hive搭建
  • mysql vsftp_vsftp配置验证方式mysql和文件虑拟用户
  • php mysql 连接运算符_php – MINUS运算符在MySQL?
  • centos7.3中安装mysql_CentOS7.3中安装MySQL5.6
  • qstring取前几个_QT中QString 类的使用--获取指定字符位置、截取子字符串等
  • 怎么用yum安装mysql数据库_使用yum如何安装mysql数据库讲析
  • java完全面向对象吗_浅谈对Java为何是完全面向对象语言
  • java getbean不同实现_Spring Boot 2 实战:根据条件来自动配置不同逻辑的Bean
  • 孝感 java_孝感java工资一般多少,孝感java工资待遇,孝感java工资待遇到多少
  • ECMAScript入门(七)--Module语法
  • Mybatis初体验
  • QQ浏览器x5内核的兼容性问题
  • React中的“虫洞”——Context
  • React组件设计模式(一)
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • storm drpc实例
  • 不上全站https的网站你们就等着被恶心死吧
  • 成为一名优秀的Developer的书单
  • 多线程 start 和 run 方法到底有什么区别?
  • 力扣(LeetCode)22
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 我感觉这是史上最牛的防sql注入方法类
  • 小李飞刀:SQL题目刷起来!
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #define与typedef区别
  • #pragma multi_compile #pragma shader_feature
  • $$$$GB2312-80区位编码表$$$$
  • (1)(1.13) SiK无线电高级配置(六)
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (八)Flask之app.route装饰器函数的参数
  • (八十八)VFL语言初步 - 实现布局
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)PyTorch代码规范最佳实践和样式指南
  • ../depcomp: line 571: exec: g++: not found
  • .Family_物联网
  • .Net - 类的介绍
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net core 依赖注入的基本用发
  • .net 程序发生了一个不可捕获的异常
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NetCore项目nginx发布
  • .net连接MySQL的方法
  • .NET项目中存在多个web.config文件时的加载顺序