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类定义的讲解
Nov 01 Python
Python中的ConfigParser模块使用详解
May 04 Python
python使用reportlab实现图片转换成pdf的方法
May 22 Python
基于python select.select模块通信的实例讲解
Sep 21 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
python实现用户答题功能
Jan 17 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
python使用pymongo操作mongo的完整步骤
Apr 13 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
python打开音乐文件的实例方法
Jul 21 Python
Python如何绘制日历图和热力图
Aug 07 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定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
Python中字符串的处理技巧分享
2016/09/17 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
Python3 翻转二叉树的实现
2019/09/30 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
2013年入党人员的自我鉴定
2013/10/25 职场文书
制药工程专业个人求职自荐信
2014/01/25 职场文书
社区安全检查制度
2014/02/03 职场文书
《长相思》听课反思
2014/04/10 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
世界文化遗产导游词
2015/02/13 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
外出学习心得体会范文
2016/01/18 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
pytorch 中nn.Dropout的使用说明
2021/05/20 Python