详解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 相关文章推荐
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
Python中的各种装饰器详解
Apr 11 Python
详解python开发环境搭建
Dec 16 Python
python读取二进制mnist实例详解
May 31 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
Python使用googletrans报错的解决方法
Sep 25 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
Python selenium自动化测试模型图解
Apr 15 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
scrapy-splash简单使用详解
Feb 21 Python
python实现简单的学生管理系统
Feb 22 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 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 和 MySQL 基础教程(二)
2006/10/09 PHP
laravel学习教程之关联模型
2016/07/30 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
jquery 使用简明教程
2014/03/05 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
puppeteer库入门初探
2019/01/09 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
Python set集合类型操作总结
2014/11/07 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
python下10个简单实例代码
2017/11/15 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
房地产员工找工作的自我评价
2013/11/15 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
小学学校评估方案
2014/06/08 职场文书
农业项目建议书
2014/08/25 职场文书
销售开票员岗位职责
2015/04/15 职场文书
思想品德课教学反思
2016/02/24 职场文书
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js