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 tempfile模块学习笔记(临时文件)
May 25 Python
python获取文件版本信息、公司名和产品名的方法
Oct 05 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
Sep 11 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
virtualenv 指定 python 解释器的版本方法
Oct 25 Python
python3字符串操作总结
Jul 24 Python
Python中调用其他程序的方式详解
Aug 06 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
浅析python 字典嵌套
Sep 29 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中count获取多维数组长度的方法
2014/11/03 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
PHP 实现重载
2021/03/09 PHP
jQuery实现冻结表格行和列
2015/04/29 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
Python程序设计入门(1)基本语法简介
2014/06/13 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
Python Series从0开始索引的方法
2018/11/06 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
Python基础教程之异常详解
2019/01/10 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
幼师自荐信
2013/10/26 职场文书
三年级小学生评语
2014/04/22 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
党员作风建设自查报告
2014/10/23 职场文书
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
Python开发五子棋小游戏
2022/05/02 Python
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS