详解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创建XML文档
Mar 01 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
python3实现ftp服务功能(客户端)
Mar 24 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
Python测试模块doctest使用解析
Aug 10 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
Spring http服务远程调用实现过程解析
Jun 11 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
Python中Selenium对Cookie的操作方法
Jul 09 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/11 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
PHP自定义错误用法示例
2016/09/28 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
Python的subprocess模块总结
2014/11/07 Python
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
技术学校毕业生求职信分享
2013/12/02 职场文书
生产班组长岗位职责
2014/01/05 职场文书
致400米运动员广播稿
2014/02/07 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
团委副书记工作总结
2015/08/14 职场文书
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers