免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5113 | 回复: 0
打印 上一主题 下一主题

Pickle 序列化 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-01 13:43 |只看该作者 |倒序浏览
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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP