python中cPickle类使用方法详解


Posted in Python onAugust 27, 2018

在python中,一般可以使用pickle类来进行python对象的序列化,而cPickle提供了一个更快速简单的接口,如python文档所说的:“cPickle ? A faster pickle”。

cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等。而所谓的序列化,我的粗浅的理解就是为了能够完整的保存并能够完全可逆的恢复。在cPickle中,主要有四个函数可以做这一工作,下面使用例子来介绍。

1. dump: 将python对象序列化保存到本地的文件

import cPickle
 data = range(1000)
 cPickle.dump(data,open("test\\data.pkl","wb"))

dump函数需要指定两个参数,第一个是需要序列化的python对象名称,第二个是本地的文件,需要注意的是,在这里需要使用open函数打开一个文件,并指定“写”操作

2. load:载入本地文件,恢复python对象

data = cPickle.load(open("test\\data.pkl","rb"))

同dump一样,这里需要使用open函数打开本地的一个文件,并指定“读”操作

3. dumps:将python对象序列化保存到一个字符串变量中

data_string = cPickle.dumps(data)

4. loads:从字符串变量中载入python对象

data = cPickle.loads(data_string)

5. pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别。要和其他语言交互,可以使用内置的json包

使用pickle模块你可以把Python对象直接保存到文件,而不需要把他们转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件里。 pickle模块会创建一个python语言专用的二进制格式,你基本上不用考虑任何文件细节,它会帮你干净利落地完成读写独享操作,唯一需要的只是一个合法的文件句柄。

pickle模块中的两个主要函数是dump()和load()。dump()函数接受一个文件句柄和一个数据对象作为参数,把数据对象以特定的格式保存 到给定的文件中。当我们使用load()函数从文件中取出已保存的对象时,pickle知道如何恢复这些对象到它们本来的格式。

  • dumps()函数执行和dump() 函数相同的序列化。取代接受流对象并将序列化后的数据保存到磁盘文件,这个函数简单的返回序列化的数据。
  • loads()函数执行和load() 函数一样的反序列化。取代接受一个流对象并去文件读取序列化后的数据,它接受包含序列化后的数据的str对象, 直接返回的对象。

cPickle是pickle得一个更快得C语言编译版本。

pickle和cPickle相当于java的序列化和反序列化操作

#! /usr/local/env python
# -*- coding=utf-8 -*-

if __name__ == "__main__":
  import cPickle

#序列化到文件
obj = 123,"abcdedf",["ac",123],{"key":"value","key1":"value1"}
print obj
#输出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'})
#r+ 读写权限 r+b 读写到二进制文件
f = open(r"d:\a.txt","r+")
cPickle.dump(obj,f)
f.close()
f = open(r"d:\a.txt")
print cPickle.load(f)
#输出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'})

#序列化到内存(字符串格式保存),然后对象可以以任何方式处理如通过网络传输
obj1 = cPickle.dumps(obj)
print type(obj1)
#输出:<type 'str'>
print obj1
#输出:python专用的存储格式
obj2 = cPickle.loads(obj1)
print type(obj2)
#输出:<type 'tuple'>
print obj2
#输出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
python flask中静态文件的管理方法
Mar 20 Python
Django学习笔记之ORM基础教程
Mar 27 Python
python使用turtle绘制分形树
Jun 22 Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
wxPython实现绘图小例子
Nov 19 Python
屏蔽Django admin界面添加按钮的操作
Mar 11 Python
python关于集合的知识案例详解
May 30 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 Python
Python采集壁纸并实现炫轮播
Apr 30 Python
python散点图实例之随机漫步
Aug 27 #Python
python3.5绘制随机漫步图
Aug 27 #Python
Python反射和内置方法重写操作详解
Aug 27 #Python
Python使用matplotlib绘制随机漫步图
Aug 27 #Python
Python面向对象之继承和组合用法实例分析
Aug 27 #Python
Python干货:分享Python绘制六种可视化图表
Aug 27 #Python
python使用matplotlib库生成随机漫步图
Aug 27 #Python
You might like
全国中波电台频率表
2020/03/11 无线电
PHP中的命名空间相关概念浅析
2015/01/22 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
python3图片转换二进制存入mysql
2013/12/06 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
Python os模块常用方法和属性总结
2020/02/20 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
学生干部的自我评价分享
2014/01/18 职场文书
党支部综合考察材料
2014/05/19 职场文书
企业消防安全责任书
2014/07/23 职场文书
工作岗位职责范本
2015/02/15 职场文书
教师节主持词开场白
2015/05/29 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python