我刚刚开始学习pickle模块,并尝试编写一个练习代码(该程序应将字典保存到文件中,并在每次重新启动时进行检索)。
我编写的程序运行正常,问题是每当我再次打开它时,所做的更改都不会保存到文件中(我认为)。当我尝试调试时,只会保留我输入的第一个数据。
你能指出我的问题吗?
这是我的一些代码
import pickle
def main():
ofile=open('pickledveg.dat','ab')
ifile=open('pickledveg.dat','rb')
try:
vegdct=pickle.load(ifile)
print (vegdct)#check
except EOFError:
vegdct={}
#changes im(well the user) making here work ok(can see by printing vegdct after each change)
ifile.close()
pickle.dump(vegdct,ofile)
ofile.close()
答案 0 :(得分:2)
我认为您可以以更简单,更易读的方式完成相同的工作。基本上,您可以通过以下方式读取文件:
pickle.load(open('myfile', 'rb'))
并以此方式覆盖:
pickle.dump(vegdct, open('myfile', 'wb'))
还有,如果您这样做:
pickle.dump(vegdct, open('myfile', 'ab'))
(当前正在执行的操作),只需将所做的更改附加到文件末尾。因此,我认为您只是在添加一些您未看到的更改。我希望这会有所帮助。