为什么我所做的更改(使用泡菜模块)没有保存?

时间:2019-10-10 14:03:26

标签: python

我刚刚开始学习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()

1 个答案:

答案 0 :(得分:2)

我认为您可以以更简单,更易读的方式完成相同的工作。基本上,您可以通过以下方式读取文件:

pickle.load(open('myfile', 'rb'))

并以此方式覆盖:

pickle.dump(vegdct, open('myfile', 'wb'))

还有,如果您这样做:

pickle.dump(vegdct, open('myfile', 'ab'))

(当前正在执行的操作),只需将所做的更改附加到文件末尾。因此,我认为您只是在添加一些您未看到的更改。我希望这会有所帮助。