python数据持久存储 pickle模块的基本使用方法解析


Posted in Python onAugust 30, 2019

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从sqlite读取并显示数据的方法
May 08 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
详解用python生成随机数的几种方法
Aug 04 Python
python快速排序的实现及运行时间比较
Nov 22 Python
python标准库os库的函数介绍
Feb 12 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
Python生成器常见问题及解决方案
Mar 21 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
Nov 19 Python
python 命令行传入参数实现解析
Aug 30 #Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 #Python
python在OpenCV里实现投影变换效果
Aug 30 #Python
python 模拟贷款卡号生成规则过程解析
Aug 30 #Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 #Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 #Python
python获取Linux发行版名称
Aug 30 #Python
You might like
php去除重复字的实现代码
2011/09/16 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
原生js实现日期联动
2015/01/12 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
js实现微信分享代码
2020/10/11 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
从0开始学Vue
2016/10/27 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
2014年手术室工作总结
2014/11/26 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript