【问题标题】:Why aren't the changes I'm making (using pickle module) saved?为什么我所做的更改(使用 pickle 模块)没有保存?
【发布时间】:2019-10-10 22:44:12
【问题描述】:

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

【问题讨论】:

    标签: python


    【解决方案1】:

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

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

    并以这种方式覆盖:

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

    更重要的是,如果你这样做:

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

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

    【讨论】:

    • choice=0 whilechoice!=QUIT:choice=get_menu_choice() ifchoice==Look_up:look_up(vegdct) ifchoice==Add:add(vegdct) ifchoice==Change:change( vegdct) if choice==Delete: delete(vegdct) 这是我主要功能的缺失部分。也许我不够清楚......首先我添加了一对,(通过说更改我的意思是更改字典中键的值)。之后,我使用函数查找,所以我可以看到更改已保存。但是如果我关闭然后再次打开,我首先输入的对被保存
    • 从现在开始我所做的任何更改都不会保存以供进一步使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2019-03-26
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多