对象存在于程序运行时的内存中,当程序不再运行时或断电关机时,这些对象便不再存在。我现在想把对象保存下来,方便以后使用,这就是持久化技术。

利用 python标准库中的的pickle模块可以将对象转换为一种可以传输或存储的格式。

如果希望透明地存储 python 对象,而不丢失其身份和类型等信息,则需要某种形式的对象序列化:它是一个将任意复杂的对象转成对象的文本或二进制表示的过程。

主要方法

pickle模块中有两个主要函数,它们是dump()和load()。

dump()方法

该方法的作用是实现python 对象的序列化,将 obj 保存到 file 中。

具体语法如下:

pickle.dump(obj, file[, protocol])

obj:要持久化保存的对象;

file: 将对象序列化后保存到的类文件对象;

它必须有一个可以接受单字符串作为入参的write() 方法。这个对象可以是一个以写模式打开的文件对象或者一个 StringIO 对象,或者其他任意满足条件的接口;

protocol: 可选的参数,默认为 0。0表示所序列化的对象使用可打印的ASCII码表示;1或True 表示使用老式的二进制协议;2表示使用python2.3版本引入的新二进制协议,比以前的高效;负值表示将使用可用的最高协议版本。

如果 protocol>=1,那么文件对象需要以二进制形式打开。

dumps()

具体语法为:

pickle.dumps(obj[, protocol])

返回一个字符串,而不是存入文件中。

load()

该方法用于反序列化,即将序列化的对象重新恢复成python对象。

具体语法如下:

pickle.load(file)

这个 file 必须是一个拥有一个能接收单整数为参数的 read() 方法以及一个不接收任何参数的 readline() 方法,并且这两个方法的返回值都应该是字符串。这可以是一个打开为读的文件对象、StringIO 对象或其他任何满足条件的对象。

loads()

pickle.loads(string)

从字符串中恢复对象。

Pickler()

class pickle.Pickler(file[, protocol])

可以使用该对象调用dunmp 和 load 等方法。

clear_memo()

对于相同的对象,如果不使用clear_memo()方法,那么python只会pickle一次

cPickle 模块

cPickle 是 pickle的优化版, cPickle是 C 编写的因此它可以比pickle快 1000倍。但是它不支持使用子类化的Pickler()和Unpickler()类,因为在cPickle中,这些都是不是类的功能。大多数应用程序不需要此功能,并可以受益于cPickle的改进性能。除此之外,这两个模块的接口是几乎完全相同。

用例

In [2]: try:

...: import cPickle as pickle

...: except:

...: import pickle

...:

In [3]: info = [1, 2, 3, 'hello']

In [4]: data1 = pickle.dumps(info)

In [5]: print data1

(lp1

I1

aI2

aI3

aS'hello'

p2

a.

In [6]: data2 = pickle.loads(data1)

In [7]: print data2

[1, 2, 3, 'hello']

In [8]: type(data1)

Out[8]: str

python中pickle模块_python标准库学习之pickle模块相关推荐

  1. python解析xml文件选用模块_Python标准库系列之xml模块

    Python's interfaces for processing XML are grouped in the xml package. 带分隔符的文件仅有两维的数据:行和列.如果你想在程序之间交 ...

  2. pythonurllib标准_Python标准库学习笔记 urllib模块

    利用缓存实现简单的获取 import urllib import os def reporthook(blocks_read,block_size,total_size): if not blocks ...

  3. python中divmod函数_Python标准库:内置函数divmod(a, b)

    本函数是实现 a 除以 b ,然后返回商与余数的元组.如果两个参数 a,b 都是整数,那么会采用整数除法,结果相当于( a//b, a % b) .如果 a 或 b 是浮点数,相当于( math.fl ...

  4. python的threading库_python标准库介绍——31 threading 模块详解

    threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...

  5. python 删除csv第一行_python 标准库学习之 csv

    本文由作者 凭海临风 授权刊登.原文地址:https://jeffsui.github.io/2020/01/02/python-standard-library-csv/ 文档路径 官方文档:htt ...

  6. random是python标准库吗_python标准库介绍——27 random 模块详解

    ==random 模块== "Anyone who considers arithmetical methods of producing random digits is, of cour ...

  7. python标准库的图像处理模块_Python图像处理库PIL的ImageFont模块使用介绍

    ImageFont模块定义了相同名称的类,即ImageFont类.这个类的实例存储bitmap字体,用于ImageDraw类的text()方法. PIL使用自己的字体文件格式存储bitmap字体.用户 ...

  8. python string模块template_Python标准库笔记(1) — string模块

    String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作. 1. 常用方法 常用方法描述str.capitalize()把字符串的首字母大写str.center(width) ...

  9. python几次方函数_Python标准库math中用来计算x的y次方的函数是pow(x,y)。

    [判断题]Python表达式int("110", 2)的值为6. [单选题]关于 Python 的复数类型,以下选项中描述错误的是( ). [判断题]现代物流管理以实现顾客满意为第 ...

  10. python图像处理模块_Python图像处理库PIL的ImageEnhance模块使用介绍

    Python图像处理库PIL的ImageEnhance模块使用介绍 发布时间:2020-08-31 20:08:55 来源:脚本之家 阅读:66 ImageEnhance模块提供了一些用于图像增强的类 ...

最新文章

  1. 记录一下添加查询场地坐标功能中修改判断条件和画点的大小
  2. Redis数据类型(String)
  3. C语言fputs()函数(把字符串写入到指定的流 stream (文件指针)中)
  4. 【NOIP 模拟赛】 道路
  5. 软件开发技术文档_你知道,直播软件开发需要做的准备工作有哪些?
  6. python生成器函数_Python 编写生成器函数
  7. ios捕捉键盘view
  8. 用极大化思想解决最大子矩形问题
  9. 蓝桥杯 ADV-118 算法提高 3-2字符串输入输出函数
  10. 数据库身份证号用什么类型_互联网企业数据库安全的现状与对策
  11. 大数据如何改变企业的业务
  12. spring(二)-反射、动态代理
  13. QT designer安装及运用
  14. python代码表达失恋_罗建军失恋
  15. centos7 C++ 使用libjpeg-turbo (让jpg 转bmp以及bmp转jpg)
  16. CSICTF2020随缘Writeup
  17. 开启win10防火墙开启某端口
  18. 根文件系统(rootfs)理解
  19. 不是你需要中台,而是一名合格的架构师(附各中台建设PPT)
  20. NoSQL与SQL:选择数据管理解决方案

热门文章

  1. JavaScript 错误 - Throw、Try 和 Catch
  2. 京沪等地11月房价半年来首涨 平价走量将成主流
  3. 每日英语:How Many People Really Use Sina Weibo
  4. Host localhost is not allowed to connect to mysql server解决方法
  5. 华为设备IS-IS路由控制原理与实验
  6. iStack详解(三)——iStack多主检测方式
  7. iStack详解(二)——堆叠连接方式堆叠拓扑变动处理
  8. 第一届“百度杯”信息安全攻防总决赛 find the flag WP
  9. Flutter之Dialog使用和踩坑
  10. CentOS7安装配置启动MySQL(附解决password does not satisfy)