Python pickle模块用法实例


Posted in Python onApril 14, 2015

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()
Python 相关文章推荐
跟老齐学Python之有容乃大的list(2)
Sep 15 Python
python中偏函数partial用法实例分析
Jul 08 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
python使用matplotlib绘制柱状图教程
Feb 08 Python
Python实现针对中文排序的方法
May 09 Python
python中reload(module)的用法示例详解
Sep 15 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 Python
利用Python优雅的登录校园网
Oct 21 Python
使用Python解决图表与画布的间距问题
Apr 11 Python
使用Python的PEAK来适配协议的教程
Apr 14 #Python
Python全局变量操作详解
Apr 14 #Python
Python and、or以及and-or语法总结
Apr 14 #Python
Python线程的两种编程方式
Apr 14 #Python
Python中的测试模块unittest和doctest的使用教程
Apr 14 #Python
利用Python中的输入和输出功能进行读取和写入的教程
Apr 14 #Python
对于Python编程中一些重用与缩减的建议
Apr 14 #Python
You might like
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
python开发之字符串string操作方法实例详解
2015/11/12 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
python 字符串格式化的示例
2020/09/21 Python
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
法律专业学生的自我评价
2014/02/07 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
入党介绍人评语
2014/05/06 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
校运会班级霸气口号
2015/12/24 职场文书
销售会议开幕词
2016/03/04 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle