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模块介绍
Nov 30 Python
python如何读写csv数据
Mar 21 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
python读取并写入mat文件的方法
Jul 12 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
python3 中时间戳、时间、日期的转换和加减操作
Jul 14 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
python爬虫 requests-html的使用
Nov 30 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 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
德劲1103的维修打理经验
2021/03/02 无线电
PHP 字符串操作入门教程
2006/12/06 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
JS实现打字游戏
2019/12/17 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
python 全文检索引擎详解
2017/04/25 Python
Django中提示消息messages的设置方式
2019/11/15 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
以下的初始化有什么区别
2013/12/16 面试题
面包店的创业计划书范文
2014/01/16 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
创先争优活动个人总结
2015/03/04 职场文书
计划生育工作总结2015
2015/04/03 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
外出学习心得体会范文
2016/01/18 职场文书
MySQL约束超详解
2021/09/04 MySQL