程序不记得变化

时间:2015-05-22 09:23:54

标签: python save

您好我已经梳理了可能的解决方案而我无法解决这个问题,我的程序大部分工作但问题是当我关闭程序时它并不记得所做的更改用户。程序将输入存储到变量中。它就像一本字典(我在了解字典功能之前编写代码)当我打开程序时我可以输入输入但问题是当我关闭程序时它会忘记所有的更改并回到原来的状态第一次编译。有什么想法,当我关闭程序并重新打开它时,如何允许数据可用?

2 个答案:

答案 0 :(得分:1)

可能你需要shelve。它是一个很棒的Python库,它允许您从文件中读/写类似dict的数据。例如:

import shelve
dict_with_data = dict(key1='value1', key2='value2')
storage = shelve.open('shelve_file')
storage.update(dict_with_data)
storage.close()

这是一个非常简单的示例,它打开搁置存储并使用您的数据更新它。实际上你可以用常规字典对象做任何事情,因为

  

“架子”是一个持久的,类似字典的对象。

您可以使用的另一个库是pickle。它允许您序列化每种Python对象,但由于你有字典结构搁置应该更好地满足你的需求。

请随意填写提问/发布您的代码,我很乐意根据您的需求更新我的答案。

答案 1 :(得分:0)

我认为你需要在这里实现两件事。

1)您的程序需要采用可选的输入文件,最好的方法是使用argparse。如果传递输入文件,则从文件中提取数据并使用该数据初始化dictionary_like对象。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--input', help='input file name')
args = parser.parse_args()

if args.input:
    ... # open the file, load the data, initialize a dict with the data

2)在退出之前,您必须在输入文件中保存数据(键:值对)。如果你想保存像结构这样的字典,那么文件每一行的一个带有键:值对的txt文件应该足够好了。

with open(input, 'w') as f:
    for key,value in dictionary.items():
        f.write(str(key)+':'+str(value)+'\n') #you can use '\t' or whatever instead the ':'

就是这样。 如果您需要有关如何实施的更多帮助,请告诉我们;)