好吧,我的问题很具体,我先道歉。我是一个新的程序员,尝试着自己从头开始开发。这是相对成功的,只有最后一个问题,我可以看到。你可以在这里完整地查看我的代码。在
所以我遇到的问题与我保存文件的方式有关。我第一次试着把它从字典里挑出来,但是我一直出错,因为我的字典
(名称,类别)对。在
我在这里搜索了一下,发现我可以尝试JSON来做同样的事情。最后也犯了同样的错误。最后我找到了工作正常的klepot模块。我成功地保存了我的字典并成功地加载了它。直到后来我发现我可以向文件中添加新的项目,但每当我从dict中删除一些内容并保存时。下次我加载它。我拿掉的钥匙还在那儿。在
TLDR:可以添加一些东西到我的dict并保存到txt文件,但是当我从dict中删除并保存时,它不会保存删除的密钥。在
不管怎样,我在保存文件或加载文件的方式上还是两者都有问题?任何帮助都将不胜感激。在
编辑:好吧,我假设它是我当前设置为保存和加载的方式。在
try:
alcohols = file_archive('Alcohols.txt')
alcohols.load()
except IOError:
alcohols = {}
print('alcohols doesn\'t exist.')
以及
^{pr2}$它在添加新项时很好地保存了字典,但是说我必须进行编辑并删除某些内容,然后保存并退出。下一次装载时,它会有旧的和新的一样。奇怪的是,我似乎在所有的编辑中都弄坏了一些东西。不保存新条目。在
编辑2:
del alcohols[name] #deletes the key out of the dict
我就是这样取下钥匙的。最初我使用的是pop方法,但当它不能保存更改时,我尝试了这个方法。值得注意的是,它确实从字典中删除了key,value,但是保存和重新加载并不能反映这种变化。在
alcohols[name] = Alcohol() #instantiates the new class
这就是我如何创建新的键,值对。在
解决编辑:
我的问题是我从字典里删除它们的方式。以防以后有人来这里。看看@Mike Mckerns的回答。必须从存档的字典中删除。在
基本上,您是从“内存”缓存中删除,而不是从“文件”缓存中删除。默认情况下,
klepto
存档为您提供“内存中”缓存,您可以直接通过dict接口使用它,它还提供了一个archive
作为后端。在因此,当您
dump
时,您将内存中的项转移到后端。 要从缓存和存档中删除,必须同时从两者中删除。在我想我可以在一个函数调用中更容易地从两者中删除。。。在
相关问题 更多 >
编程相关推荐