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基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 Python
Python lxml模块安装教程
Jun 02 Python
Python实现数据库编程方法详解
Jun 09 Python
在Python 中实现图片加框和加字的方法
Jan 26 Python
Python装饰器用法与知识点小结
Mar 09 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
Jupyter notebook如何实现指定浏览器打开
May 13 Python
Python sorted对list和dict排序
Jun 09 Python
详解torch.Tensor的4种乘法
Sep 03 Python
python 发送邮件的四种方法汇总
Dec 02 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 Python
Python数据可视化之绘制柱状图和条形图
May 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
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
JavaScript事件列表解说
2006/12/22 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
Javascript浅谈之this
2013/12/17 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
微信小程序 navbar实例详解
2017/05/11 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
Python字符串和文件操作常用函数分析
2015/04/08 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
python中的数据结构比较
2019/05/13 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
Python原始套接字编程实例解析
2020/01/29 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
Ajax的优点和缺点
2014/11/21 面试题
英文版销售经理个人求职信
2013/11/20 职场文书
高中生学习的自我评价
2013/12/14 职场文书
个人培训自我鉴定
2014/03/28 职场文书
学生安全责任书范本
2014/07/24 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
MySQL创建管理KEY分区
2022/04/13 MySQL