python数据持久存储:pickle模块的基本使用

来源:互联网 发布:灰度共生矩阵 svm 编辑:程序博客网 时间:2024/05/21 12:41

python数据持久存储:pickle模块的基本使用

  python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

  基本接口:

  pickle.dump(obj, file, [,protocol])
  注解:将对象obj保存到文件file中去。
     protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。其中协议0和1兼容老版本的python。protocol默认值为0。
     file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以’w’方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。

  pickle.load(file)
  注解:从file中读取一个字符串,并将它重构为原来的python对象。
  file:类文件对象,有read()和readline()接口。

  A Simple Code

复制代码
#使用pickle模块将数据对象保存到文件

import pickle

data1 = {'a': [1, 2.0, 3, 4+6j],
'b': ('string', u'Unicode string'),
'c': None}

selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)

output = open('data.pkl', 'wb')

# Pickle dictionary using protocol 0.
pickle.dump(data1, output)

# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)

output.close()
复制代码

 

复制代码
#使用pickle模块从文件中重构python对象

import pprint, pickle

pkl_file = open('data.pkl', 'rb')

data1 = pickle.load(pkl_file)
pprint.pprint(data1)

data2 = pickle.load(pkl_file)
pprint.pprint(data2)

pkl_file.close()
复制代码



作者: pzxbc
出处: http://pzxbc.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: Python
标签: python, pickle, 数据持久存储
好文要顶 关注我 收藏该文
pzxbc
关注 - 3
粉丝 - 23
+加关注
9
0

« 上一篇:python中获取打包成执行文件(exe)和脚本运行文件的路径
» 下一篇:一个快速的多边形填充算法
    </div>    <div class="postDesc">posted @ <span id="post-date">2012-03-18 15:53</span> <a href="http://www.cnblogs.com/pzxbc/">pzxbc</a> 阅读(<span id="post_view_count">46069</span>) 评论(<span id="post_comment_count">2</span>)  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=2404715" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(2404715);return false;">收藏</a></div></div><script type="text/javascript">var allowComments=true,cb_blogId=101965,cb_entryId=2404715,cb_blogApp=currentBlogApp,cb_blogUserGuid='b9dd2bb6-5110-e111-b422-842b2b196315',cb_entryCreatedDate='2012/3/18 15:53:00';loadViewCount(cb_entryId);</script>





  
#1楼 2012-03-18 22:05 | wodemyworld  
pickle是个有意思的模块
支持(0)反对(0)

  
#2楼30428512014/10/13 15:07:37 2014-10-13 15:07 | BlueAndGray  
文章很有用,转载了
支持(0)反对(0)
http://pic.cnblogs.com/face/363228/20140916134153.png
刷新评论刷新页面返回顶部
【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【活动】优达学城正式发布“无人驾驶车工程师”课程
【推荐】移动直播百强八成都在用融云即时通讯云
【推荐】别再闷头写代码!找对工具,事半功倍,全能开发工具包用起来
【福利】网易云信1周年接入开发者突破10万,送红包活动火热开展中
最新IT新闻:
· 美国网络瘫痪急着找中国公司背锅,但更大的问题还在后面
· 携程投资美国三大旅行社 全面布局北美旅游市场
· 大疆推新款远摄变焦云台相机 可进行交通监控
· 微软股价悄悄破了纪录,这事儿至少有两个原因
· 太拼了 中兴手机最早创始人之一时隔14年出任公司CEO
» 更多新闻…
最新知识库文章:
· 技术的正宗与野路子
· 陈皓:什么是工程师文化?
· 没那么难,谈CSS的设计模式
· 程序猿媳妇儿注意事项
· 可是姑娘,你为什么要编程呢?
» 更多知识库文章…
fixPostBody(); setTimeout(function () { incrementViewCount(cb_entryId); }, 50); deliverAdT2(); deliverAdC1(); deliverAdC2(); loadNewsAndKb(); loadBlogSignature(); LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid); GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate); loadOptUnderPost(); GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);
</div><!--end: forFlow --></div><!--end: mainContent 主体内容容器--><div id="sideBar">    <div id="sideBarMain">

<

0 0
原创粉丝点击