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 相关文章推荐
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
python 解压pkl文件的方法
Oct 25 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
python双向链表原理与实现方法详解
Dec 03 Python
Python3连接Mysql8.0遇到的问题及处理步骤
Feb 17 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
python中scipy.stats产生随机数实例讲解
Feb 19 Python
基于Python实现流星雨效果的绘制
Mar 18 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
PHP教程 基本语法
2009/10/23 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
Selenium chrome配置代理Python版的方法
2018/11/29 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
django创建超级用户过程解析
2019/09/18 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
python opencv角点检测连线功能的实现代码
2020/11/24 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
太太口服液广告词
2014/03/20 职场文书
创先争优承诺书范文
2014/03/31 职场文书
担保书怎么写
2014/04/01 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
环保建议书200字
2014/05/14 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
python可视化大屏库big_screen示例详解
2021/11/23 Python