python基础:pkl格式文件

一、pkl格式文件简介

        pkl格式文件,全称pickle,Python中一种用于序列化对象的文件格式。

        以字典(dict)、数据框(DataFrame)或任何其他数据类型的形式作为数据集使用的时候,可能希望将它们保存到文件中,以便以后可以使用它们或将它们发送给其他人。 这就是Python的pickle模块的用途:它将对象序列化,以便将它们保存到文件中,并在以后再次加载到程序中。

        Pickling允许将python对象保存为硬盘驱动器上的二进制文件。 在pickle对象后,可以结束你的python会话,重新启动你的计算机,然后再次将你的对象加载到python中。

二、pkl格式文件示例代码

        处理pkl文件需要先导入pickle库,然后自定义字典数据内容。

2.1 保存pkl文件

        要想保存pkl文件,需要先定义函数将以上的data数据转化为pkl文件,其中使用到了pickle.dump()函数,之后调用函数时传入参数data与data.pkl,也就是转化后的文件将以“data.pkl”命名,成功运行则输出一个句子表示文件成功转化并保存。

import pickle

data = {"Name": "Galaxy", "Age": 404, "City": "Ic"}

# 将数据写入二进制文件的函数
def write_b(b, b_path):
    with open(b_path, 'wb') as fw:
        pickle.dump(b, fw)
write_b(data, 'data.pkl')
print(f"Data has been serialized and saved to 'data.pkl'")

2.2 读取pkl文件

        要想读取pkl文件则简单定义一个函数,然后调用它并输出即可,其中使用到了pickle.load()函数,调用时需要传入文件名称,也就是前面保存并命名的‘data.pkl’:

# 从二进制文件读取数据的函数
def read_b(b_path):
    with open(b_path, 'rb') as fr:
        b = pickle.load(fr)
    return b
loaded_data = read_b('data.pkl')
print("Loaded data:", loaded_data)

2.3 补充

2.3.1 w/w+/wb/r/r+/rb/a/a+

        w:只写。打开即默认创建一个新文件,如果文件已存在,则覆盖写。

        w+:写读。打开创建新文件并写入数据,如果文件已存在,则覆盖写。

        wb:以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,则覆盖写。

        r:只读。该文件必须已存在。

        r+:可读可写。该文件必须已存在,写为追加在文件内容末尾。

        rb:表示以二进制方式读取文件。该文件必须已存在。

        a:追加写。若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建新文件,只能执行写(追加在后面),不能读。

        a+:追加写读。打开文件方式与写入方式和'a'一样,但是可以读。需注意的是你若刚用‘a+’打开一个文件,一般不能直接读取,因为此时光标已经是文件末尾,除非你把光标移动到初始位置或任意非末尾的位置。

2.3.2 pickle函数

        pickle.dump()函数:

pickle.dump(obj, file, protocol=None, *, fix_imports=True, buffer_callback=None)

         将对象 obj 封存以后的对象写入已打开的  file object file。它等同于 Pickler(file, protocol).dump(obj)。

        pickle.load()函数:

pickle.load(file, *, fix_imports=True, encoding='ASCII', errors='strict', buffers=None)

        从已打开的 file object 文件 中读取封存后的对象,重建其中特定对象的层次结构并返回。它相当于 Unpickler(file).load()


pkl格式文件简介的参考文章:Python中的Pickle操作(pkl文件解释) | 数据学习者官方网站(Datalearner)

w/w+/wb/r/r+/rb/a/a+的参考文章:

一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab) - 宁晃 - 博客园 (cnblogs.com)

 更多有关pickle的详细内容:

pickle — Python object serialization — Python 3.12.4 documentation

你可能感兴趣的:(Python基础,python)