python中pickle模块_python标准库学习之pickle模块
对象存在于程序运行时的内存中,当程序不再运行时或断电关机时,这些对象便不再存在。我现在想把对象保存下来,方便以后使用,这就是持久化技术。
利用 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模块相关推荐
- python解析xml文件选用模块_Python标准库系列之xml模块
Python's interfaces for processing XML are grouped in the xml package. 带分隔符的文件仅有两维的数据:行和列.如果你想在程序之间交 ...
- pythonurllib标准_Python标准库学习笔记 urllib模块
利用缓存实现简单的获取 import urllib import os def reporthook(blocks_read,block_size,total_size): if not blocks ...
- python中divmod函数_Python标准库:内置函数divmod(a, b)
本函数是实现 a 除以 b ,然后返回商与余数的元组.如果两个参数 a,b 都是整数,那么会采用整数除法,结果相当于( a//b, a % b) .如果 a 或 b 是浮点数,相当于( math.fl ...
- python的threading库_python标准库介绍——31 threading 模块详解
threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...
- python 删除csv第一行_python 标准库学习之 csv
本文由作者 凭海临风 授权刊登.原文地址:https://jeffsui.github.io/2020/01/02/python-standard-library-csv/ 文档路径 官方文档:htt ...
- random是python标准库吗_python标准库介绍——27 random 模块详解
==random 模块== "Anyone who considers arithmetical methods of producing random digits is, of cour ...
- python标准库的图像处理模块_Python图像处理库PIL的ImageFont模块使用介绍
ImageFont模块定义了相同名称的类,即ImageFont类.这个类的实例存储bitmap字体,用于ImageDraw类的text()方法. PIL使用自己的字体文件格式存储bitmap字体.用户 ...
- python string模块template_Python标准库笔记(1) — string模块
String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作. 1. 常用方法 常用方法描述str.capitalize()把字符串的首字母大写str.center(width) ...
- python几次方函数_Python标准库math中用来计算x的y次方的函数是pow(x,y)。
[判断题]Python表达式int("110", 2)的值为6. [单选题]关于 Python 的复数类型,以下选项中描述错误的是( ). [判断题]现代物流管理以实现顾客满意为第 ...
- python图像处理模块_Python图像处理库PIL的ImageEnhance模块使用介绍
Python图像处理库PIL的ImageEnhance模块使用介绍 发布时间:2020-08-31 20:08:55 来源:脚本之家 阅读:66 ImageEnhance模块提供了一些用于图像增强的类 ...
最新文章
- 记录一下添加查询场地坐标功能中修改判断条件和画点的大小
- Redis数据类型(String)
- C语言fputs()函数(把字符串写入到指定的流 stream (文件指针)中)
- 【NOIP 模拟赛】 道路
- 软件开发技术文档_你知道,直播软件开发需要做的准备工作有哪些?
- python生成器函数_Python 编写生成器函数
- ios捕捉键盘view
- 用极大化思想解决最大子矩形问题
- 蓝桥杯 ADV-118 算法提高 3-2字符串输入输出函数
- 数据库身份证号用什么类型_互联网企业数据库安全的现状与对策
- 大数据如何改变企业的业务
- spring(二)-反射、动态代理
- QT designer安装及运用
- python代码表达失恋_罗建军失恋
- centos7 C++ 使用libjpeg-turbo (让jpg 转bmp以及bmp转jpg)
- CSICTF2020随缘Writeup
- 开启win10防火墙开启某端口
- 根文件系统(rootfs)理解
- 不是你需要中台,而是一名合格的架构师(附各中台建设PPT)
- NoSQL与SQL:选择数据管理解决方案
热门文章
- JavaScript 错误 - Throw、Try 和 Catch
- 京沪等地11月房价半年来首涨 平价走量将成主流
- 每日英语:How Many People Really Use Sina Weibo
- Host localhost is not allowed to connect to mysql server解决方法
- 华为设备IS-IS路由控制原理与实验
- iStack详解(三)——iStack多主检测方式
- iStack详解(二)——堆叠连接方式堆叠拓扑变动处理
- 第一届“百度杯”信息安全攻防总决赛 find the flag WP
- Flutter之Dialog使用和踩坑
- CentOS7安装配置启动MySQL(附解决password does not satisfy)