Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108893
  • 博文数量: 49
  • 博客积分: 2612
  • 博客等级: 少校
  • 技术积分: 431
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-01 14:31
个人简介

来来去去

文章分类

全部博文(49)

文章存档

2015年(1)

2012年(4)

2011年(1)

2010年(42)

2009年(1)

我的朋友

分类: Python/Ruby

2010-02-01 13:43:02

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('')
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('').read()
    banner=pickle.loads(src) #这里loads的是字符串src
    for line in banner:
        print "".join(map(lambda pair:pair[0]*pair[1],line))
        


阅读(1166) | 评论(0) | 转发(0) |
0

上一篇:urllib 应用

下一篇:Zip应用

给主人留下些什么吧!~~