python基础学习-通过pickle将list通过二进制写入文件,然后读取其二进制文件

基本介绍

这里引用其他博客中的一个关于dump、load的介绍
Python中的Pickle模块实现了基本的数据序列与反序列化。

一、dump()方法

pickle.dump(obj, file, [,protocol])

注释:序列化对象,将对象obj保存到文件file中去。参数protocol是序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)。file表示保存到的类文件对象,file必须有write()接口,file可以是一个以’w’打开的文件或者是一个StringIO对象,也可以是任何可以实现write()接口的对象。

二、load()方法

pickle.load(file)

注释:反序列化对象,将文件中的数据解析为一个python对象。file中有read()接口和readline()接口

pickle中dump与load介绍

例子

这里通过具体的例子来展示如何用dump和load写入和读取二进制文件

# 将list通过二进制写入文件,然后读取其二进制文件
import pickle
my_list = [123, 2.22, 'test', ['abc']]

# 通过写入二进制模式打开文件
pickle_file = open('mylist_pkl.pkl', 'wb')

# 序列化对象,将对象obj保存到文件file中去
pickle.dump(my_list, pickle_file)
# 关闭文件
pickle_file.close()

# 通过读取二进制模式打开文件
pickle_file = open('mylist_pkl.pkl', 'rb')

# 反序列化对象,将文件中的数据解析为一个python对象
my_list2 = pickle.load(pickle_file)

print(my_list2)

效果
在这里插入图片描述
这里的文件后缀名其实是什么没有关系,因为我们写入和读取的时候都通过了二进制转换,直接打开文件很有可能是乱码。

ps:遇到一个小坑,创建python文件的时候图方便,命名直接为pickle,和引入的pickle重名了,导致了报错。报错内容如下
在这里插入图片描述

闲谈pickle

pickle直接的英文解释就是泡菜,可以理解成pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。类似我们将泡菜腌制在泡菜罐里,类似封装的感觉,需要再取出来,而不是每次用到都重新腌制一遍。
pickle可以存储和读取成其他格式比如list dict的数据,这叫做序列化和反序列化,把你的数据结构转换成字符串 ,可以保存到文件,方便下次快速恢复。有了pickle,依靠dump和load,就可以轻松实现。说的直白一点,就是一个存储和获取的工具,pickle把Python的数据结构用另外一种简单的形式存储到文件中,然后方便转移和传播,然后在用同一样的方法还原回去。
这一部分套用了pickle的意义

举一个小甲鱼视频中简单的例子。
对于这种占用大部分空间的字典,可以通过pickle的dump保存到文件当中
在这里插入图片描述
在这里插入图片描述
需要的时候再通过pickle的load获取
在这里插入图片描述

Guess you like

Origin blog.csdn.net/m0_47146037/article/details/120648032