简介

pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。

pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化,

pickle序列化后的数据,可读性差,人一般无法识别。

常用函数

pickle.dump(obj, file[, protocol])
  序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。
  
pickle.load(file)
  反序列化对象。将文件中的数据解析为一个Python对象。

实例

import  pickle
# 要存储的信息
some_obj = {'x':[4,2,1.5,1], 'y':[32,[101],17], 'foo':True, 'spam':False}
# 将信息存到 mypickle.pickle
# .mo这个后缀可以随便写
with open('mypickle.mo', 'wb') as f:pickle.dump(some_obj, f)with open('mypickle.mo','rb') as f:loaded_obj = pickle.load(f)
print(loaded_obj)

注意: 代码中的.mo文件后缀可以随便写,注意在读取的时候保持一致就行

看我生成的文件

可能会产生的错误

注意代码中的下面这句

with open('mypickle.mo','rb') as f

如果不写rb,可能会引起下面的错误

参考

python——pickle模块的详解

以下内容来自
Python中的Pickle操作(pkl文件解释

什么是Pickle?

您刚刚经历了一个耗时的过程,将一堆数据加载到python对象中。 也许你从数千个网站上爬取了数据。也许你计算了pi的数值。如果您的笔记本电脑电池耗尽或python崩溃,您的信息将丢失。

Pickling允许您将python对象保存为硬盘驱动器上的二进制文件。 在你pickle你的对象后,你可以结束你的python会话,重新启动你的计算机,然后再次将你的对象加载到python中。

如果需要,您可以将您的pickle文件备份到Google Drive或DropBox或普通的USB存储中。 你可以发邮件给朋友。

一句警告:不要加载你不信任的pkl文件。 恶意的人可以制作恶意的pkl文件,可能会在您的计算机上执行意外的代码(SQL注入,密码暴力强制等)。

Pickle用于序列化和反序列化Python对象结构,也称为marshalling或flattening。 序列化是指将内存中的对象转换为可以存储在磁盘上或通过网络发送的字节流的过程。之后,这个字符流可以被检索并将其反序列化回Python对象。 Pickle不要与压缩相混淆! 前者是将对象从一种表示(随机存取存储器(RAM)中的数据)转换为另一种表示(磁盘上的文本),而后者是使用较少位编码数据的过程,以节省磁盘空间。

Pickle可以做什么?

对于需要在数据中保持一定程度持久性的应用程序,Pickling非常有用。 您的程序的状态数据可以保存到磁盘,因此您可以稍后继续处理它。 它还可用于通过传输控制协议(TCP)或套接字连接(Socket)发送数据,或将python对象存储在数据库中。 当您使用机器学习算法时,Pickle非常有用,您可以将它们保存在以后能够进行新的预测,而无需重新编写所有内容或重新训练模型。

什么时候不能使用Pickle?

如果要使用不同编程语言的数据,建议不要使用pickle。 它的协议特定于Python,因此不保证跨语言兼容性。 对于不同版本的Python本身也是如此。 不同版本的Python中反序列化Pickle的文件可能并不总是正常工作,因此您必须确保使用相同的版本并在必要时执行更新。您最好不要从不受信任的来源中取消数据。因为解压缩时可能会执行文件中的恶意代码。

用Pickle存储数据

哪些对象可以用Pickle方式存取?
您可以使用以下数据类型来pickle对象:

布尔值,
整数,
花车,
复数,
(普通和Unicode)字符串,
元组,
列表,
集合,和
获取可选对象的字典。
以上所有内容都可以进行Pickle操作,但您也可以对类和函数执行相同的操作,例如,如果它们是在模块的顶层定义的。

然而,并非所有东西都可以被轻易Pickle:例如,生成器,内部类,lambda函数和默认值。 对于lambda函数,您需要使用名为dill的附加包。 使用defaultdicts,您需要使用模块级函数创建它们。

python——pickle模块的使用相关推荐

  1. python pickle模块

    持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让 ...

  2. python——pickle模块的详解

    python--pickle模块的详解 介绍 pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议 "Pickling"是将Python对象层次结构转换为字节 ...

  3. Python Pickle模块入门级使用介绍

    目录 0. 概要 1. 一个简单的例子 2. Module Interface 2.1 pickle.dump(obj, file, protocol = None, *, fix_imports = ...

  4. Python pickle模块:实现Python对象的持久化存储

    Python 中有个序列化过程叫作 pickle,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化.也就是说,pickle 可以实现 Python 对象的存储及恢复. ...

  5. Python pickle模块和joblib模块浅析

    在Python中,如果希望透明地存储对象,而不丢失其身份和类型等信息,则需要某种形式的对象序列化,这是一个将任意复杂的对象转成对象的文本和二进制表示的过程.同样,必须能够将对象经过序列化后的形式恢复到 ...

  6. python pickle模块:数据序列化和反序列化

      pickle模块是python中数据序列化和反序列化的一个包,该模块提供了一套算法,用于对一个Python对象进行serializing(序列化为字符串)和de-serializing(从字符串构 ...

  7. python pickle模块的使用/将python数据对象序列化保存到文件中

    # Python 使用pickle/cPickle模块进行数据的序列化"""Python序列化的概念很简单.内存里面有一个数据结构, 你希望将它保存下来,重用,或者发送给 ...

  8. Python pickle 模块简介

    pickle 模块实现用于序列化和反序列化 Python 对象结构的二进制协议."pickling"是将 Python 对象层次结构转换为字节流的过程,"unpickli ...

  9. python pickle模块安装_python如何安装pickle

    pickle是python语言的一个标准模块,安装python后已包含pickle库,不需要单独再安装. pickle模块实现了基本的数据序列化和反序列化.(推荐学习:Python视频教程) 通过pi ...

最新文章

  1. define的多行定义
  2. Science:Knight组发表尸体降解过程中的微生物组
  3. SpringSecurity过滤器链汇总
  4. Stack(栈)和Heap(堆)的区别
  5. wxWidgets:wxGridEditorCreatedEvent类用法
  6. H - Maximal submatrix HDU - 6957
  7. docker打包镜像(实用版)
  8. python pygame鼠标点击_Python之pygame学习鼠标操作(12)
  9. Google OKR 目标管理体系学习
  10. word中标题去掉前面的点
  11. 第1.5 章 elasticsearch备份过程记录
  12. 利用强化学习设计具有目标有效杨氏模量的复合材料
  13. 超星/智慧树 网课答案查询 高正确率
  14. 服务器(CentOS7)配置安装oracle12c(v12.2.0)
  15. zookeeper 数据节点的增删改查
  16. Postgresql杂谈 16—Postgresql中的锁机制
  17. Nginx是干什么的
  18. 卸妆·回归:“超级医保局时代“的医院信息化转型
  19. strrchr和strchr用法
  20. EXCEL表中原来常规的数字自动转换成中文大写

热门文章

  1. AutoCAD图纸集运用详解
  2. artdialog html4,artdialog_ (dialog4) 显示页面样式的用法
  3. php重签ipa,免电脑iOS无限自动重签IPA工具ReProvision教学
  4. 首届中国网络文学论坛
  5. 无限分页infinite-scroll整合SpringMVC
  6. 具有DPP-4抑制活性的新型氨甲基联苯衍生物
  7. C++项目实战(一)——简单商品销售系统实现
  8. 刀锋战记2服务端手游开服架设服务器搭建需要什么
  9. 单片机入门级视频教程
  10. twine创建软链接_如何使用Twine和SugarCube创建交互式冒险游戏