我的功能保存到泡菜不起作用
my function save to pickle not working
我有一个脚本调用下面的函数来从 pickle load 创建一个字典,如下所示:
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。如果密钥已经在 pickle 加载的字典中,我就通过。我的问题是 save_obj 似乎没有将更新后的字典保存到 pickle 中。我肯定错过了什么。任何帮助,将不胜感激。
在我的测试中,我可以看到加载时的字典长度为 1919,添加新记录后的字典长度为 1920。
您正在正确添加和保存所有内容。但是,您没有以加载文件时使用的相同名称保存文件。您加载文件 obj/test.pkl
,然后将其另存为 .obj/test.pkl
。我的猜测是您试图在此处使用当前目录符号,因此将每个 obj/
或 .obj/
更改为 ./obj/
。还要检查文件系统中所有目录的名称和文件名。
我有一个脚本调用下面的函数来从 pickle load 创建一个字典,如下所示:
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。如果密钥已经在 pickle 加载的字典中,我就通过。我的问题是 save_obj 似乎没有将更新后的字典保存到 pickle 中。我肯定错过了什么。任何帮助,将不胜感激。 在我的测试中,我可以看到加载时的字典长度为 1919,添加新记录后的字典长度为 1920。
您正在正确添加和保存所有内容。但是,您没有以加载文件时使用的相同名称保存文件。您加载文件 obj/test.pkl
,然后将其另存为 .obj/test.pkl
。我的猜测是您试图在此处使用当前目录符号,因此将每个 obj/
或 .obj/
更改为 ./obj/
。还要检查文件系统中所有目录的名称和文件名。