python - 我的功能保存到 pickle 不工作

标签 python python-3.x pickle

我有一个脚本,它调用下面的函数来从 pickle 加载创建一个字典,如下所示:

def load_obj(name ):
    try:
        with open('obj/' + name + '.pkl', 'rb') as f:
            return pickle.load(f)
    except:
        return dict(name)

我更新 pickle 加载的字典以添加新的 key:value 记录,然后使用此函数保存 pickle:

def save_obj(obj, name ):
    pathlib.Path('.obj').mkdir(exist_ok=True)
    with open('.obj/'+ name + '.pkl', 'wb') as f:
        pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)

我的目的是从 pickle 加载创建一个字典,向该字典添加一个新的 key:value 并保存 pickle。如果 key 已经在 pickle 加载的字典中,我就通过。我的问题是 save_obj 似乎没有将更新的字典保存到 pickle 中。我肯定错过了一些东西。任何帮助,将不胜感激。 在我的测试中,我可以看到加载时字典的长度是1919,添加新记录后字典的长度是1920。

最佳答案

您正在正确添加和保存所有内容。但是,您没有以加载该文件的相同名称保存该文件。您加载文件 obj/test.pkl 并将其另存为 .obj/test.pkl。我的猜测是您尝试在此处使用当前目录符号,因此将每个 obj/.obj/ 更改为 ./obj/。还要检查文件系统中所有目录的名称和文件名。

关于python - 我的功能保存到 pickle 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50361764/

相关文章:

python - __reduce__ 和 __reduce_ex__ 有什么区别?

python - 无法加载 pickle 对象

python - 按数字最大的顺序对显示的内容进行排序

python - 使用增量分类器 sklearn 在 cPickle 之后文件大小增加和减少

python - Keras 中的自定义加权损失函数,用于对每个元素进行加权

python - 只获取最后的回溯而不使用 None 的 raise?

python - 如何检查文本是否具有特定格式?

python - 在从 pydantic.BaseModel 创建的 JSON 中,如果未设置,则排除可选

python - Numexpr 无法识别浮点类型(稀疏矩阵)

python - @staticmethod返回值