详解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中的元组概念
May 21 Python
python实现excel读写数据
Mar 02 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
python如何爬取个性签名
Jun 19 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
python截取两个单词之间的内容方法
Dec 25 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
Python面向对象编程基础实例分析
Jan 17 Python
Python使用xpath实现图片爬取
Sep 16 Python
Flask处理Web表单的实现方法
Jan 31 Python
教你怎么用Python处理excel实现自动化办公
Apr 30 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调用.NET的WebService 简单实例
2015/03/27 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
js实现小时钟效果
2020/03/25 Javascript
Python实现爬取逐浪小说的方法
2015/07/07 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
对Django中内置的User模型实例详解
2019/08/16 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
采用怎样的方法保证数据的完整性
2013/12/02 面试题
出国考察邀请函
2014/01/21 职场文书
师德学习感言
2014/01/31 职场文书
会计自荐信范文
2014/03/09 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
详解Python中__new__方法的作用
2022/03/31 Python