就像我打开带有列表的.py文件后,我应该可以看到附加和/或插入的项目。所以基本上我的最终原始副本已更改。我该怎么做?
例如:我在list.py文件中有一个list_things。 list_things = [john,albert,Martin,Suzzy]
我有一个main.py文件,我将在GUI中运行后对list_things进行更改。这只是暂时的。如果我停止并重新运行该文件,它将再次显示旧列表内容(list_things)而不是更新列表。
但是当我再次运行它时,我希望更新的列表显示在GUI中。
答案 0 :(得分:0)
Python解码器关闭时,Python模块不会保存添加到对象的数据。每次python运行时都会重新初始化。通常,保存旧数据对于程序来说将是灾难性的。
但你可以自己做。最简单的方法之一是使用pickle
模块将对象保存到稍后可以阅读的文件中。您必须担心和保存,因此人们通常会写帮助程序为您执行此操作,如下例所示。
但仍有问题。如果此程序的两个副本同时运行,则会覆盖另一个副本的数据。然后你需要一些更复杂的东西,甚至可能是像sqlite这样的数据库。
import pickle
_list_things = None
_list_things_file = "./list_things.pkl"
def get_list_things():
global _list_things
try:
_list_things = pickle.load(open(list_things_file, 'rb'))
except OSError:
_list_things = []
return _list_things
def save_list_things():
global _list_things
assert _list_things is not None, "tried save before get"
pickle.dump(open(_list_things_file, 'wb'))