详解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 fileinput模块使用实例
Jun 03 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
关于Django外键赋值问题详解
Aug 13 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
Django组件之cookie与session的使用方法
Jan 10 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
python urllib爬虫模块使用解析
Sep 05 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
学python最电脑配置有要求么
Jul 05 Python
Python QTimer实现多线程及QSS应用过程解析
Jul 11 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
php 随机生成10位字符代码
2009/03/26 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
2013/06/25 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
php实现源代码加密的方法
2015/07/11 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Django的分页器实例(paginator)
2017/12/01 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
python自动生成sql语句的脚本
2021/02/24 Python
银河香水:Galaxy Perfume
2019/03/25 全球购物
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
自荐信范文
2013/12/10 职场文书
小学生安全保证书
2014/02/01 职场文书
活动总结新闻稿
2014/08/30 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL