我的功能保存到泡菜不工作

时间:2018-05-16 02:48:12

标签: python python-3.x pickle

我有一个脚本调用下面的函数从pickle load创建一个dict,如:

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

我更新pickle加载的dict以添加新密钥:value record然后使用此函数保存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 load创建一个dict,添加一个新的键:值到dict并保存pickle。如果键已经在pickle加载的dict中,我只是通过。我的问题是save_obj似乎没有将更新的dict保存到pickle。当然,我错过了一些东西。任何帮助,将不胜感激。 在我的测试中,我可以看到加载时dict的长度为1919,添加新记录后dict的长度为1920.

1 个答案:

答案 0 :(得分:3)

您正在正确添加和保存所有内容。但是,您不是以加载它的名称保存文件。您加载文件obj/test.pkl,然后将其另存为.obj/test.pkl。我的猜测是您尝试在此处使用当前目录表示法,因此请将每个obj/.obj/更改为./obj/。还要检查文件系统中是否有所有目录和文件名的名称。