python - 我的功能保存到泡菜不起作用
问题描述
我有一个脚本,它调用下面的函数来从pickle加载创建一个字典,如下所示:
def load_obj(name ):
try:
with open('obj/' + name + '.pkl', 'rb') as f:
return pickle.load(f)
except:
return dict(name)
我更新了pickle加载的dict以添加一个新的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 加载的字典中,我就通过了。我的问题是 save_obj 似乎没有将更新的字典保存到泡菜中。我肯定错过了一些东西。任何帮助,将不胜感激。在我的测试中,我可以看到加载时dict的长度为1919,添加新记录后的dict长度为1920。
解决方案
您正在正确添加和保存所有内容。但是,您不会以加载文件的相同名称保存文件。您加载文件obj/test.pkl
,然后将其另存为.obj/test.pkl
. 我的猜测是您尝试在此处使用当前目录表示法,因此将每个obj/
或更改.obj/
为./obj/
. 还要检查您的文件系统中所有目录和文件名的名称。
推荐阅读
- intellij-idea - 我可以使用 Intellij Community Edition 创建 JEE Web 应用程序吗?
- cmd - 如何将 Windows 10 cmd 恢复为默认属性设置
- typescript - 如何检查apply调用的函数的参数| 来电 | 绑定并推断结果类型?
- python - IndexError:尝试读取文本文件时列表索引超出范围
- google-apps-script - 用于更新由 Google 表格中的单元格值填充的 Google 表单下拉列表的 Google 脚本功能
- c# - TableLayoutPanel 更新滞后
- python - 在 Matplotlib 中按年份绘制条形图
- mysql - 无法在 powershell 中加载 MySQL 程序集
- pandas - 随组变化的 Pandas DataFrame n-largest
- python - 如何将多个字典保存到 hdf5 并组合来自不同字典的公共键的信息?