什么是pickle?
什么是pickle?
学习《深度学习》鱼书的源码时,刚看到加载mnist数据集所用到的mnist.pkl文件,理所当然的以为pkg这样的package安装包文件。奇怪安装包为何被包含在代码目录中,结果发现
init_mnist函数还要加载它。
我们来看看这个神秘的mnist.pkl文件,打开资源管理器,发现这个文件竟然有53M
使用EditPlus打开,乱码,二进制的。
回归正题,什么是pickle?
pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。
pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化,
pickle序列化后的数据,可读性差,人一般无法识别。
pickle序列化的函数如下:
pickle.dump(obj, file[, protocol]) #序列化对象obj,并将结果数据流写入到文件对象file中param:obj, 输入对象,包含几乎所有的python数据类型(列表,字典,集合,类等)file, 表示保存到的类文件对象; 注意:file必须有write()接口,file可以是一个以'w'打开的文件或者是一个StringIO对象,也可以是任何可以实现write()接口的对象。protocol,序列化模式0:默认值,ASCII协议,表示以文本的形式序列化 1:二进制的形式序列化(老式的二进制协议)2:二进制的形式序列化(新的二进制协议)3/4/-1:python3中指定的协议,目的是让python2.x无法解析
与之对应的是反序列化对象函数:
pickle.load(file) #反序列化对象, 将文件中的数据解析为一个Python对象#注意:在load(file)的时候,要让python能够找到类的定义,否则会报错#file中有read()接口和readline()接口
其它函数:
pickle.dumps(obj) #以字节对象形式返回封装的对象,不需要写入文件中
pickle.loads(bytes_object) #从字节对象中读取被封装的对象,并返回
pickle模块可能出现三种异常:1. PickleError:封装和拆封时出现的异常类,继承自Exception2. PicklingError: 遇到不可封装的对象时出现的异常,继承自PickleError3. UnPicklingError: 拆封对象过程中出现的异常,继承自PickleError
应用举例:回到加载mnist数据集的使用上:
def init_mnist():download_mnist()dataset = _convert_numpy()print("Creating pickle file ...")with open(save_file, 'wb') as f: //f为可用'wb'写入的二进制文件pickle.dump(dataset, f, -1) //protocol为-1,python3中指定的协议,默认为3,当<0时,值为4print("Done!")if not os.path.exists(save_file):init_mnist()with open(save_file, 'rb') as f: //f为可用'rb'打开的二进制文件,'r'仅能打开文本文件dataset = pickle.load(f)
什么是pickle?相关推荐
- 序列化模块--json模块--pickle模块-shelve模块
什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传播到远程,因为硬盘或网络传输时只能接受bytes 例: 把内存数据 转成字符 # data ={# 'roles ...
- Python基础18-常用模块之os、sys、json、pickle、shelve、xml、re、logging、configparse、hashlib等
目录 os.os.path sys json pickle.shelve.xml.re.logging.configparse.hashlib未完待续-- os.os.path Python的os模块 ...
- Python中的pickle模块
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. Pickle模块的作用 Pickle模块用于将python对象序列化为字节流,可存储在文件或数据库中,也可同通过网络进行 ...
- Python--数据存储:pickle模块的使用讲解
在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间.Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象 ...
- python模块之json,pickle
序列化是指把内存里的数据转变成字符串,以使其能保存到硬盘上或者通过网络输送到远程. 序列化的两个模块: json:只能把python中的int/str/list/tuple/dict类型的数据,可以在 ...
- Python pickle模块:实现Python对象的持久化存储
Python 中有个序列化过程叫作 pickle,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化.也就是说,pickle 可以实现 Python 对象的存储及恢复. ...
- day4 匿名函数、装饰器、生成器、迭代器、内置函数、 json 与 pickle 模块
文章目录 1.列表生成式 2.匿名函数 3.装饰器 4.生成器 5.迭代器 6.内置函数 7.json & pickle 序列化与反序列化 1.列表生成式 可通过特定语句便捷生成列表 list ...
- 零基础入门学习Python(29)pickle模块
作用 pickle模块几乎可以把所有Python的对象都转化为二进制的形式存放,这个过程称为pickling,从二进制形式转换为对象的过程称为unpickling. pickle.dump9data, ...
- Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战
Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战 目录 Pandas将dataframe保存为pickle文件并加载保存后的pickl ...
- python使用pickle保存和加载机器学模型
python使用pickle保存和加载机器学模型 # 导入需要的包和库: # Import Required packages #-------------------------# Import t ...
最新文章
- 使用remoting远程控制编译机
- python3 解析html_Python3.x网页抓取HTMLParser
- 湖南hp服务器虚拟化解决方案,HP刀片服务器虚拟化整合解决方案-20210729062411.docx-原创力文档...
- linux tcp文件分包_Linux c实现一个tcp文件服务器和客户端
- 那些年我们一起追寻过的考研(华科计算机)
- 谷歌搜索技巧大全,google高级搜索语法指令怎么用
- 作业帮冯雪胡不归问题_【凭谁唤君胡不归作文】作业帮
- 内农大计算机学院宿舍,新疆农业大学科学技术学院宿舍条件怎么样
- java倒计时_详解java倒计时三种简单实现方式
- 《绮梦朦胧,一眼浮生醉流年》
- 【Hibernate步步为营】--映射合集汇总
- panda经典四道题期末考核分享
- 登陆界面改怎么测试,分析,测试用例
- web的标准网页设计与php课后,web网页设计尺寸规范
- windows 10 build 10074 内部预览版 连不上windows update
- video标签的全部配置
- python基础教程:python+gdal+遥感图像拼接(mosaic)的实
- 自定义顺序/九宫格抽奖
- 使用JointJS绘制流程图1
- PAT 基于词频的文件相似度 (set) -- 解题报告
热门文章
- 笔记:APDrawingGAN: Generating Artistic Portrait Drawings From Face Photos With Hierarchical GANs
- c#实现动态加载Dll
- Dw 2020最新版下载地址 一键安装Windows
- js打怪兽(封装函数)
- mysql的过程返回执行成功与失败_mysqli_query函数执行成功返回一个结果标识符,失败时返回false...
- Python+selenium(二)
- Nginx的正向代理和反向代理
- 西门子PLC指令表IL与梯形图或语句表编程有啥不同
- 今日头条2018校园招聘第一题 ---POJ 2479
- 1-Java常见基础