详解Python3 pickle模块用法


Posted in Python onSeptember 16, 2019

pickle(python3.x)和cPickle(python2.x的模块)相当于java的序列化和反序列化操作。

常采用下面的方式使用:

import pickle
pickle.dump(obj,f)
pickle.dumps(obj,f)
pickle.load(f)
pickle.loads(f)

使用pickle模块你可以把Python对象直接保存到文件,而不需要把他们转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件里。 pickle模块会创建一个python语言专用的二进制格式,你基本上不用考虑任何文件细节,它会帮你干净利落地完成读写独享操作,唯一需要的只是一个合法的文件句柄。

pickle模块中的两个主要函数是dump()和load():

dump()函数接受一个文件句柄和一个数据对象作为参数,把数据对象以特定的格式保存到给定的文件中。当我们使用load()函数从文件中取出已保存的对象时,pickle知道如何恢复这些对象到它们本来的格式。

dumps()函数执行和dump() 函数相同的序列化。取代接受流对象并将序列化后的数据保存到磁盘文件,这个函数简单的返回序列化的数据。

loads()函数执行和load() 函数一样的反序列化。取代接受一个流对象并去文件读取序列化后的数据,它接受包含序列化后的数据的str对象, 直接返回的对象。

示例:

# -*- coding:utf-8 -*-
import pickle
obj = 123, "abcdef", ["ac", 123], {"key": "value", "key1": "value1"}
print(obj)
# 序列化到文件
with open(r"F:\pycodes\ML\a.txt", "wb") as f:
 pickle.dump(obj, f)
with open(r"F:\\pycodes\\ML\\a.txt", "rb") as f:
 print(pickle.load(f))# 输出:(123, 'abcdef', ['ac', 123], {'key': 'value', 'key1': 'value1'})
# 序列化到内存(字符串格式保存),然后对象可以以任何方式处理如通过网络传输
obj1 = pickle.dumps(obj)
print(type(obj1))# 输出<class 'bytes'>
print(obj1)# 输出:python专用的存储格式 b'\x80\x03(K{X\x06\x00\x00\x00abcdefq\x00]q\x01(X\x02\x00\x00\x00acq\x02K{e}q\x03(X\x03\x00\x00\x00keyq\x04X\x05\x00\x00\x00valueq\x05X\x04\x00\x00\x00key1q\x06X\x06\x00\x00\x00value1q\x07utq\x08.'
obj2 = pickle.loads(obj1)
print(type(obj2))# 输出:<class 'tuple'>
print(obj2) # 输出:(123, 'abcdef', ['ac', 123], {'key': 'value', 'key1': 'value1'})

总结

以上所述是小编给大家介绍的Python3 pickle模块用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python模块学习 filecmp 文件比较
Aug 27 Python
python生成随机密码或随机字符串的方法
Jul 03 Python
Python2.x与Python3.x的区别
Jan 14 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
python 批量修改/替换数据的实例
Jul 25 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
python pptx复制指定页的ppt教程
Feb 14 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
python与idea的集成的实现
Nov 20 Python
python基础之错误和异常处理
Oct 24 Python
python scipy卷积运算的实现方法
Sep 16 #Python
python 三元运算符使用解析
Sep 16 #Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 #Python
Python循环实现n的全排列功能
Sep 16 #Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 #Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 #Python
Python 最强编辑器详细使用指南(PyCharm )
Sep 16 #Python
You might like
php中计算时间差的几种方法
2009/12/31 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
JS实现京东商品分类侧边栏
2020/12/11 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
Python 错误和异常代码详解
2018/01/29 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
家居设计专业个人自荐信范文
2013/11/26 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
任长霞观后感
2015/06/16 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
《角的度量》教学反思
2016/02/18 职场文书
Go归并排序算法的实现方法
2022/04/06 Golang
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript