详解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连接DB2数据库
Aug 27 Python
Python实现使用卷积提取图片轮廓功能示例
May 12 Python
Python系统监控模块psutil功能与经典用法分析
May 24 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
利用jupyter网页版本进行python函数查询方式
Apr 14 Python
Python pandas对excel的操作实现示例
Jul 21 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
python中xlrd模块的使用详解
Feb 01 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 Python
Python何绘制带有背景色块的折线图
Apr 23 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中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
python连接mysql有哪些方法
2020/06/24 Python
python下载的库包存放路径
2020/07/27 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
应用化学专业职业生涯规划书
2014/01/22 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
男女朋友协议书
2014/04/23 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
部队个人年终总结
2015/03/02 职场文书
2015入党自荐书范文
2015/03/05 职场文书
同事去世追悼词
2015/06/23 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python