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

时间:2018-03-31 18:37:15

标签: python python-3.x

就像我打开带有列表的.py文件后,我应该可以看到附加和/或插入的项目。所以基本上我的最终原始副本已更改。我该怎么做?

例如:我在list.py文件中有一个list_things。      list_things = [john,albert,Martin,Suzzy]

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

但是当我再次运行它时,我希望更新的列表显示在GUI中。

1 个答案:

答案 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'))