Python 如何永久地反映我对列表(在另一个.py文件中)所做的更改?

Python 如何永久地反映我对列表(在另一个.py文件中)所做的更改?,python,python-3.x,Python,Python 3.x,就像打开包含列表的.py文件后一样,我应该能够看到附加和/或插入的项目。所以基本上我的名单的最后一份原件被修改了。我该怎么做 我有一个list.py文件中的列表。 列出事情=[约翰、阿尔伯特、马丁、苏西] 我有一个main.py文件,在GUI中运行后,我将从中更改列表内容。这只是暂时的。如果我停止它并重新运行该文件,它将再次显示旧的列表内容列表内容,而不是更新的列表 但是当我再次运行时,我希望更新后的列表显示在GUI中。当解释器关闭时,Python模块不会保存添加到对象中的数据。每次python

就像打开包含列表的.py文件后一样,我应该能够看到附加和/或插入的项目。所以基本上我的名单的最后一份原件被修改了。我该怎么做

我有一个list.py文件中的列表。 列出事情=[约翰、阿尔伯特、马丁、苏西]

我有一个main.py文件,在GUI中运行后,我将从中更改列表内容。这只是暂时的。如果我停止它并重新运行该文件,它将再次显示旧的列表内容列表内容,而不是更新的列表


但是当我再次运行时,我希望更新后的列表显示在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'))

这是添加到列表的正常方式。你需要给我们举一个例子,看看哪里出了问题。这个问题可能会因为太宽泛或不清楚你在问什么而结束。编一个例子,如果你还不明白,就回来吧。我又编辑了这个问题。现在更清楚了吗?将其存储在代码之外。