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中的线程进行网络编程的入门教程
Apr 15 Python
python在linux系统下获取系统内存使用情况的方法
May 11 Python
Python中Django框架利用url来控制登录的方法
Jul 25 Python
requests和lxml实现爬虫的方法
Jun 11 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
PyQt5实现简易电子词典
Jun 25 Python
python+numpy实现的基本矩阵操作示例
Jul 19 Python
使用Django清空数据库并重新生成
Apr 03 Python
python 画图 图例自由定义方式
Apr 17 Python
Python通过Pillow实现图片对比
Apr 29 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 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中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
微信自定义分享php代码分析
2016/11/24 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
JQuery live函数
2010/12/24 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
Python实现模拟时钟代码推荐
2015/11/08 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
EJB的激活机制
2013/10/25 面试题
个人找工作的自我评价
2013/10/17 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
一年级小学生评语大全
2014/12/25 职场文书
颐和园的导游词
2015/01/30 职场文书