什么是pickle?

article/2025/8/28 20:05:44

什么是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)

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/DLkpM3nO.shtml

相关文章

Laravel SQL查询中first, pluck与lists方法的使用

看到说明文档上面介绍&#xff0c;难免有些迷惑&#xff0c;还是亲自动手试试吧。 sql测试数据表 -- ---------------------------- -- Table structure for users -- ---------------------------- DROP TABLE IF EXISTS users; CREATE TABLE users (id int(10) unsigned NOT…

git chrry pickup

git chrry pickup 目录概述需求&#xff1a; 设计思路实现思路分析1.java2.转移分支3.git merge4.cherry pick. 切换到 master 分支Cherry pick 操作参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xf…

春秋云镜wp day1

春秋云镜wp day1 (qq.com) 建议关注公众号 websec.space&#xff0c;以后文章来csdn备份一份 今天看到之前买了内网渗透那本书&#xff0c;今天看到靶场上线了&#xff0c;打一天玩一下&#xff0c;总体cve的洞很好刷&#xff0c;比打CTF轻松多了。 CVE-2022-32991 首先登陆…

计算机网络谢希仁第七版 第四章 答案

计算机网络谢希仁第七版 第四章 网络层 计算机网络 第七版 谢希仁 答案 1.网络层向上提供的服务有哪两种?是比较其优缺点。网络层向运输层提供 “面向连接”虚电路(Virtual Circuit)服务或“无连接”数据报服务前者预约了双方通信所需的一切网络资源。优点是能提供服务质…

《计算机网络》谢希仁第七版知识点总结

1 概述1.1 网络的网络1.2 互联网的组成1.2.1 边缘部分1.2.2 核心部分 1.3 计算机网络的类别1.4 计算机网络的性能指标&#xff08;考点&#xff09;1.4.1 速率1.4.2 时延 1.5 计算机网络的体系结构1.5.1 协议与划分层次 1.6 各协议的体系结构1.6.1 各层功能概述1.6.2 主机H1向H…

计算机网络谢希仁第七版课后习题答案(第九章)

1.无线局域网都由哪几部分组成&#xff1f;无线局域网中的固定基础设施对网络的性能有何影响&#xff1f;接入点 AP 是否就是无线局域网中的固定具体设施&#xff1f; 无线局域网由无线网卡、无线接入点(AP)、计算机和有关设备组成&#xff0c;采用单元结构&#xff0c;将整个系…

计算机网络第四章课后答案(第七版谢希仁著)

计算机网络第四章课后答案简介&#xff1a; 平时老师布置的作业自己做的答案&#xff0c;仅是做参考&#xff0c;希望有帮助 还可以把全部的答案分享给大家&#xff1a;>完整答案< 第四章课后作业答案&#xff1a; 第一页&#xff1a; 第二页&#xff1a; 第三页&#…

计算机网络第七版 第四章课后答案

4-55.如图所示&#xff0c;网络145.13.0.0/16划分为四个子网N1,N2,N3和N4。这四个子网与路由器R连接的接口分别是m0&#xff0c;m1&#xff0c;m2和m3。路由器R的第五个接口m4连接到互联网。 有题目可以看出四个网络地址的地址掩码均为/18,故可以得出子网掩码均为255.255.192.0…

计算机网络第七版(谢希仁)第五章——传输层课后习题答案(上)

文章目录 5-01解答 5-02解答 5-03解答 5-04解答 5-05解答 5-06解答 5-07解答 5-08解答 5-09解答 5-10解答 5-11解答 5-12解答 5-13解答 5-14解答 5-15解答 5-16解答 5-17解答 5-18解答 5-19解答 5-20解答 5-21解答 5-22解答 5-23解答 5-24解答 5-25解答 5-26解答 5-27解答 5-28…

计算机网络谢希仁第七版 第二章 课后答案

计算机网络谢希仁第七版 第二章 课后答案 2-01 物理层要解决哪些问题&#xff1f;物理层的主要特点是什么&#xff1f;计算机网络谢希仁 答案&#xff1a;物理层要解决的主要问题&#xff1a; &#xff08;1&#xff09;物理层要尽可能地屏蔽掉物理设备和传输媒体&#xff0c;…

《计算机网络(第七版)谢希仁 编著》部分课后答案

1-28 假定要在网络上传送1.5MB的文件。设分组长度为1KB&#xff0c;往返时间RTT80ms。传送数据之前还需要有建立TCP连接的时间&#xff0c;这时间是2RTT160ms。试计算在以下几种情况下接收方收完该文件的最后一个比特所需的时间。 &#xff08;1&#xff09;数据发送速率为…

计算机网络 第七版【谢希仁】部分答案(第1~7章)【附:电子书】

计算机网络&#xff08;第7版&#xff09;-谢希仁主编.pdf&#xff1a;【链接&#xff1a;https://pan.baidu.com/s/1Nkz7Gxd6hoChXntR6860bw 提取码&#xff1a;zjxs】 建议在拼多多上买本习题解答&#xff01; 目 录 第一章 概述 第二章 物理层 第三章 数据链路层 第…

计算机网络第七版 谢希仁 课后答案

想看更多算法题&#xff0c;可以扫描上方二维码关注我微信公众号“数据结构和算法”&#xff0c;截止到目前我已经在公众号中更新了500多道算法题&#xff0c;其中部分已经整理成了pdf文档&#xff0c;截止到目前总共有800多页&#xff08;并且还会不断的增加&#xff09;&…

第七版自顶向下 第一章中文版 计算机网络课后习题答案

本人编写了1-9章全部答案&#xff0c;在我发布的pdf文件里&#xff0c;需要的话自行下载。文件免费 第一章 R组 1.主机和端系统这两个概念没有什么不同。在本书中&#xff0c;“主机”这个名词和“端系统”这个名词可以相互替换。端系统包括PC、工作站、web服务器、邮件服务器、…

计算机网络(第七版)谢希仁编著 前五章课后答案计算题详解

前五章课后答案计算题详解 目录 第一章&#xff1a; 第二章 第三章 第四章 第一章&#xff1a; 10、试在下列条件下比较电路交换和分组交换。要传送的报文共x&#xff08;bit&#xff09;&#xff0c;从源站到目的站共经过k段链路&#xff0c;每段链路的传播时延为d&#x…

CentOS7通过omnibus安装包搭建GitLab环境

简介 gitlab是一个开源的软件&#xff0c;类似于github.com那样的git代码管理仓库&#xff0c;这里利用官方的omnibus安装包进行简单部署GitLab环境 安装依赖环境 yum install -y git #安装git yum install -y openssh-server #安装openssh-server systemctl enable openss…

Gitlab omnibus 8.15.1 升级到 9.5.+

升级场景 由于公司要通过gitlab接入ci和cd功能&#xff0c;经测试一个repo不能正常使用&#xff0c;且gitlab9.5之后增加了很多新功能&#xff0c;比较吸引我们 GPG Commit Verification: GPG密钥允许您验证签名提交 New Navigation Improvements: 界面窗口有所改进&#xff0…

gitlab升级(Omnibus packages)

为什么80%的码农都做不了架构师&#xff1f;>>> 1、下载安装包 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-8.7.0-ce.0.el6.x86_64.rpm 下载rpm包时&#xff0c;使用清华的镜像 2、rpm升级 rpm -Uvh gitlab-ce-8.7.0-ce.0.el6.x86_64…

CentOS 7 Omnibus 包安装 GitLab 并汉化记录

为什么80%的码农都做不了架构师&#xff1f;>>> 系统环境 操作系统&#xff1a;CentOS 7 GitLab&#xff1a;gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm下载Omnibus安装包 使用国内镜像加速下载地址 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gi…

Omnibus系列之 创建ObjectServer并配置

前面博客里已经安装好了 Object Server、Probe、还有gateway组件&#xff0c;接下来进行配置&#xff0c;使各组件运行起来。 首先创建Object server DB&#xff0c;linux和windows版本的操作系统创建的方法如下 创建object server DB&#xff0c;执行以下命令 NCOMS是系统默认…