Python 之 cPickle 实现 文件存取

计算机的内存中存储的是二进制的序列 (当然,在Linux眼中,是文本流)。我们可以直接将某个对象所对应位置的数据抓取下来,转换成文本流 (这个过程叫做serialize),然后将文本流存入到文件中。由于Python在创建对象时,要参考对象的类定义,所以当我们从文本中读取对象时,必须在手边要有该对象的类定义,才能懂得如何去重建这一对象。从文件读取时,对于Python的内建(built-in)对象
(比如说整数、词典、表等等),由于其类定义已经载入内存,所以不需要我们再在程序中定义类。但对于用户自行定义的对象,就必须要先定义类,然后才能从文件中载入对象。

在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)

【源码示例】

import h5py
import cPickle

#data_path = 'F:\\20150727_1010\\FEAT_Name.mat'
data_path = 'F:\\wfpdm\\20150727_1010\\FEAT_Name.mat'
#data_path = 'H:\\wfpdm\\20150727_1010\\FEAT_Name.mat'
root_path = "F:\\wfpdm\\20150727_1010\\"
#root_path = "H:\\wfpdm\\20150727_1010\\"

myfile=h5py.File(data_path,'r')
Data_Set = [myfile[element[0]][:].T for element in myfile['FEAT_Name']]
#data = [myfile[element[0]][:].T for element in myfile['FEAT_Name']]
#print data[0].shape
#print data[1].shape
print Data_Set[0].shape
myfile.close()

filename='Tst.pkl'
fid = open(root_path+filename, 'wb')
cPickle.dump(Data_Set,fid)
fid.close()

fim = open(root_path+filename,"rb")
loaddata = cPickle.load(fim)
fim.close()
print loaddata[0].shape

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-28 07:11:01

Python 之 cPickle 实现 文件存取的相关文章

Python:使用cPickle储存器存储对象

一个简单的例子,演示了怎么使用cPickle存储对象 #!/usr/bin/python #Filename:pickling.py import cPickle as p shoplistfile = 'shoplist.data' shoplist = ['apple', 'mango', 'carrot'] f = file(shoplistfile, 'w') p.dump(shoplist, f) f.close() del shoplist f = file(shoplistfile

python模块--cPickle

在python中,一般可以使用pickle类来进行python对象的序列化,而cPickle提供了一个更快速简单的接口,如python文档所说的:“cPickle -- A faster pickle”. cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等.而所谓的序列化,我的粗浅的理解就是为了能够完整的保存并能够完全可逆的恢复.在cPickle中,主要有四个函数可以做这一工作,下面使用例子来介绍. 1. dump: 将python对象

python中cPickle

在python中,一般可以使用pickle类来进行python对象的序列化,而cPickle提供了一个更快速简单的接口,如python文档所说的:“cPickle -- A faster pickle”. cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等.而所谓的序列化,我的粗浅的理解就是为了能够完整的保存并能够完全可逆的恢复.在cPickle中,主要有四个函数可以做这一工作,下面使用例子来介绍. 1, dump: 将python对象

python 中cPickle学习二

写入: import cPickle as p shoplistfile = 'data.data' shoplist = ['meili',['current_account',[100000,1222],'basis_account',[5555555,888]], 'qinshan',['current_account',[1089000,12292],'basis_account',[55555955,888]], 'jiayou',['current_account',[10000,1

Python简明教程---学习笔记

字符双引号括起,数字不括: 分隔符为逗号(,),不能为空格 变量定义时即赋值 采用utf-8编码:#-*-coding:utf-8-*-或者#coding:utf-8 字符串定义:单/双引号括起 %符号用来格式化字符串,"%s"表示用字符串替换,"%d"表示整数替换,"%r"表示不管什么都打印出来 三引号可以指示一个多行字符串,其内可自由使用单双引号 转义符为反斜杠(\),注:行末反斜杠表示字符串在下一行继续不中断 字符串加前缀r或R表示字符串为

【转载】python实例手册

今天西爬虫的时候遇到了问题,在网上不停地查找资料,居然碰到两篇好文章: 1.python实例手册   作者:没头脑的土豆 另一篇在这:shell实例手册 python实例手册 #encoding:utf8 # 设定编码-支持中文 0说明 手册制作: 雪松 更新日期: 2013-12-19 欢迎系统运维加入Q群: 198173206 # 加群请回答问题 请使用"notepad++"打开此文档,"alt+0"将函数折叠后方便查阅 请勿删除信息,转载请说明出处,抵制不道德

python实例手册

python实例手册 #encoding:utf8 # 设定编码-支持中文 0说明 手册制作: 雪松 更新日期: 2013-12-19 欢迎系统运维加入Q群: 198173206 # 加群请回答问题 请使用"notepad++"打开此文档,"alt+0"将函数折叠后方便查阅 请勿删除信息,转载请说明出处,抵制不道德行为. 错误在所难免,还望指正! # python实例手册下载地址: http://hi.baidu.com/quanzhou722/item/cf447

简明python教程的读书笔记(三)

一.面向对象的编程: 面向过程的编程:根据操作数据的函数或语句块来设计程序的.这被称 为. 面向对象的编程:把数据和功能结合起来,用称为对象的东西包裹起来组织程序 的方法.这种方法称为面向对象的 编程理念. 类和对象:是面向对象编程的两个主要方面.类创建一个新类型,而对象这个类的实例 .这类似于你有一个int类型的变量,这存储整数的变量是int类的实例(对象). 怎么创建类:类使用class关键字创建.类的域和方法被列在一个缩进块中. 类的组成:对象可以使用普通的属于     对象的变量存储数据

Python 读取 pkl文件

使用python 的cPickle 库中的load函数,可以读取pkl文件的内容 import cPickle as pickle fr = open('mnist.pkl') #open的参数是pkl文件的路径 inf = pickle.load(fr) #读取pkl文件的内容 fr.close() #关闭文件 上述代码有时会出现EOFError错误 此时将代码更改为一下形式即可解决(就是将前两行代码合成一行就行了) inf = pickle.load(open('mnist.pkl')) 以