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之玩转字符串(2)更新篇
Sep 28 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
django API 中接口的互相调用实例
Apr 01 Python
django项目中新增app的2种实现方法
Apr 01 Python
为什么是 Python -m
Jun 19 Python
python中zip()函数遍历多个列表方法
Feb 18 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中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
2016/10/13 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
Webkit的跨域安全问题说明
2011/09/13 Javascript
js Calender控件使用详解
2015/01/05 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
vue.js的安装方法
2017/05/12 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
python处理中文编码和判断编码示例
2014/02/26 Python
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python下singleton模式的实现方法
2014/07/16 Python
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
Python全栈之列表数据类型详解
2019/10/01 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
旅行社各个岗位职责
2014/03/15 职场文书
铁路安全事故反思
2014/04/26 职场文书
带病坚持工作事迹
2014/05/03 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫