详解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对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
python将ansible配置转为json格式实例代码
May 15 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
Sanic框架安装与简单入门示例
Jul 16 Python
python tkinter实现屏保程序
Jul 30 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
python 实现aes256加密
Nov 27 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来处理多个提交任务
2006/10/09 PHP
一个PHP日历程序
2006/12/06 PHP
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
PHP会话控制实例分析
2016/12/24 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
简单介绍Python中的try和finally和with方法
2015/05/05 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
python 队列详解及实例代码
2016/10/18 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
详解如何使用Python编写vim插件
2017/11/28 Python
Mac安装python3的方法步骤
2019/08/09 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
培训专员岗位职责
2014/02/26 职场文书
聘用意向书范本
2014/04/01 职场文书
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
手机被没收的检讨书
2014/10/04 职场文书
村党组织公开承诺书
2015/04/30 职场文书
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫