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实现zencart产品数据导入到magento(python导入数据)
Apr 03 Python
python装饰器decorator介绍
Nov 21 Python
python matplotlib画图实例代码分享
Dec 27 Python
Python生成rsa密钥对操作示例
Apr 26 Python
Django中使用 Closure Table 储存无限分级数据
Jun 06 Python
Python Pandas数据结构简单介绍
Jul 03 Python
python实现微信自动回复机器人功能
Jul 11 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
谈谈python垃圾回收机制
Sep 27 Python
python的dict判断key是否存在的方法
Dec 09 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 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版本号
2006/10/09 PHP
php 小乘法表实现代码
2009/07/16 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
php压缩文件夹最新版
2018/07/18 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
拖动时防止选中
2017/02/03 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python3 log10()函数简单用法
2019/02/19 Python
python求绝对值的三种方法小结
2019/12/04 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
竞聘演讲稿范文
2014/01/12 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
市场营销专业自荐书
2014/06/10 职场文书
大学迎新标语
2014/06/26 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
管理失职检讨书
2015/05/05 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers