Python 如何永久地反映我对列表(在另一个.py文件中)所做的更改?
就像打开包含列表的.py文件后一样,我应该能够看到附加和/或插入的项目。所以基本上我的名单的最后一份原件被修改了。我该怎么做 我有一个list.py文件中的列表。 列出事情=[约翰、阿尔伯特、马丁、苏西] 我有一个main.py文件,在GUI中运行后,我将从中更改列表内容。这只是暂时的。如果我停止它并重新运行该文件,它将再次显示旧的列表内容列表内容,而不是更新的列表Python 如何永久地反映我对列表(在另一个.py文件中)所做的更改?,python,python-3.x,Python,Python 3.x,就像打开包含列表的.py文件后一样,我应该能够看到附加和/或插入的项目。所以基本上我的名单的最后一份原件被修改了。我该怎么做 我有一个list.py文件中的列表。 列出事情=[约翰、阿尔伯特、马丁、苏西] 我有一个main.py文件,在GUI中运行后,我将从中更改列表内容。这只是暂时的。如果我停止它并重新运行该文件,它将再次显示旧的列表内容列表内容,而不是更新的列表 但是当我再次运行时,我希望更新后的列表显示在GUI中。当解释器关闭时,Python模块不会保存添加到对象中的数据。每次python
但是当我再次运行时,我希望更新后的列表显示在GUI中。当解释器关闭时,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'))
这是添加到列表的正常方式。你需要给我们举一个例子,看看哪里出了问题。这个问题可能会因为太宽泛或不清楚你在问什么而结束。编一个例子,如果你还不明白,就回来吧。我又编辑了这个问题。现在更清楚了吗?将其存储在代码之外。