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的Flask框架实现视频的流媒体传输
Mar 31 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
Python基础教程之内置函数locals()和globals()用法分析
Mar 16 Python
Django开发中的日志输出的方法
Jul 02 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
用python实现刷点击率的示例代码
Feb 21 Python
10招!看骨灰级Pythoner玩转Python的方法
Apr 15 Python
python制作图片缩略图
Apr 30 Python
python SVM 线性分类模型的实现
Jul 19 Python
解决django-xadmin列表页filter关联对象搜索问题
Nov 15 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 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
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
php递归创建目录的方法
2015/02/02 PHP
php里array_work用法实例分析
2015/07/13 PHP
定义select的边框颜色
2008/04/28 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
Vue自定义多选组件使用详解
2020/09/08 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
Python正则简单实例分析
2017/03/21 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
详解Python IO编程
2020/07/24 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
速比涛英国官网:Speedo英国
2019/07/15 全球购物
linux面试题参考答案(4)
2013/01/28 面试题
建筑班组长岗位职责
2014/01/02 职场文书
参观接待方案
2014/03/17 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
中秋节晚会开场白
2015/05/29 职场文书
德能勤绩工作总结
2015/08/11 职场文书