- 论坛徽章:
- 0
|
Pickle使用pickle模块你可以把Python对象直接保存到文件,而不需要把他们转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件里。pickle模块会创建一个python语言专用的二进制格式,你基本上不用考虑任何文件细节,它会帮你干净利落地完成读写独享操作,唯一需要的只是一个合法的文件句柄。
pickle 模块提供了以下函数对:
dumps(object)
返回一个字符串,它包含一个 pickle 格式的对象;
loads(string) 返回包含在 pickle 字符串中的对象;
dump(object, file) 将对象写到文件,这个文件可以是实际的物理文件,但也可以是任何类似于文件的对象,这个对象具有
write() 方法,可以接受单个的字符串参数;
load(file) 返回包含在 pickle 文件中的对象。
缺省情况下,
dumps() 和
dump() 使用可打印的 ASCII 表示来创建
pickle。两者都有一个 final 参数(可选),如果为
True ,则该参数指定用更快以及更小的二进制表示来创建
pickle。
loads() 和
load() 函数自动检测 pickle 是二进制格式还是文本格式。
cPickle是用C语文编写的比pickle更高级的pickle. 我们可以通过以下语句来引入cPickle,并把cPickle当作pickle来使用:
>>> import cPickle as pickle
关于load的简例:
import pickle,urllib
banner=urllib.urlopen('http://www.pythonchallenge.com/pc/def/banner.p')
obj=pickle.load(banner) # 这里load的是一个文件类型数据:banner
out=open('E:\python challenge\pickle.txt','w')
for list in obj:
for tuple in list:
out.write(str(tuple[0]*tuple[1]))
out.write('\n')
out.close()
关于pickle.loads的简例:
import pickle
import urllib
import sys
import os
if __name__=='__main__':
src=urllib.urlopen('http://www.pythonchallenge.com/pc/def/banner.p').read()
banner=pickle.loads(src) #这里loads的是字符串src
for line in banner:
print "".join(map(lambda pair:pair[0]*pair[1],line))
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/107101/showart_2166458.html |
|