详解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操作CouchDB数据库简单示例
Mar 10 Python
在Python中使用判断语句和循环的教程
Apr 25 Python
Python升级导致yum、pip报错的解决方法
Sep 06 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 Python
django_orm查询性能优化方法
Aug 20 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
Django一小时写出账号密码管理系统
Apr 29 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 文件状态缓存带来的问题
2008/12/14 PHP
php学习之 数组声明
2011/06/09 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
javascript add event remove event
2008/04/07 Javascript
Javascript this关键字使用分析
2008/10/21 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
python range实例用法分享
2020/02/06 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
大学四年职业生涯规划书范文
2014/01/02 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
大一学生个人总结
2015/02/15 职场文书
中标通知书
2015/04/17 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS