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

2024-04-26 00:12:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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


Tags: 文件项目py内容列表maingui事情
1条回答
网友
1楼 · 发布于 2024-04-26 00:12:00

当解释器关闭时,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'))

相关问题 更多 >