详解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中的闭包详细介绍和实例
Nov 21 Python
Python获取服务器信息的最简单实现方法
Mar 05 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
python利用rsa库做公钥解密的方法教程
Dec 10 Python
Python文本特征抽取与向量化算法学习
Dec 22 Python
Python之文字转图片方法
May 10 Python
python实现括号匹配的思路详解
Aug 23 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 22 Python
Python图片验证码降噪和8邻域降噪
Aug 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 金额数字转换成英文
2010/05/06 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
2019/11/13 PHP
jquery实现点击页面计算点击次数
2015/01/23 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
微信小程序tabBar设置实例解析
2019/11/14 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
Python从MP3文件获取id3的方法
2015/06/15 Python
全面理解Python中self的用法
2016/06/04 Python
解决Django中多条件查询的问题
2019/07/18 Python
Python sep参数使用方法详解
2020/02/12 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
DTD的含义以及作用
2014/01/26 面试题
出国留学自荐信
2013/10/25 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
实验室安全管理制度
2015/08/05 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
浅谈Redis中的RDB快照
2021/06/29 Redis
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js