详解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解析xml文件实例分享
Dec 04 Python
Python实现的生成格雷码功能示例
Jan 24 Python
python机器人行走步数问题的解决
Jan 29 Python
详解Python如何生成词云的方法
Jun 01 Python
python实现俄罗斯方块游戏
Mar 25 Python
numpy matrix和array的乘和加实例
Jun 28 Python
python2 与 pyhton3的输入语句写法小结
Sep 10 Python
Python 分发包中添加额外文件的方法
Aug 16 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
python循环输出三角形图案的例子
Nov 22 Python
浅谈django不使用restframework自定义接口与使用的区别
Jul 15 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 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的异常处理类Exception的使用及说明
2012/06/13 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
node.js的事件机制
2017/02/08 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
python之import机制详解
2014/07/03 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
python实现IOU计算案例
2020/04/12 Python
python如何进入交互模式
2020/07/06 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
JAVA软件工程师测试题
2014/07/25 面试题
五一服装活动方案
2014/01/11 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
保密工作目标责任书
2014/07/28 职场文书
西安兵马俑导游词
2015/02/02 职场文书
反邪教学习心得体会
2016/01/15 职场文书
如何用python绘制雷达图
2021/04/24 Python