Python保存列表更改

Posted

技术标签:

【中文标题】Python保存列表更改【英文标题】:Python saving list changes 【发布时间】:2016-07-08 10:54:21 【问题描述】:
list = []
while True:
    list.append(input())
    print(list)

这使我可以将任何我想要的内容添加到此列表中。但是,有没有一种方法可以保留对列表的更改,以便以后运行程序时,我之前编写的所有内容都会在列表中?

编辑:如果重要的话,我使用 PyCharm 进行编码和运行我的程序

【问题讨论】:

考虑将列表保存到文本文件或任何位置。然后,您可以从源中加载列表并附加新记录。 您需要将列表转储到某个持久存储(例如,文件、数据库表)并在程序启动时读取它。 这可能会有所帮助:Python pickle/unpickle a list to/from a file 【参考方案1】:

您可以在此处使用json

import json
try:
    list = json.load(open("database.json"))
except:
    list = []
while True:
    try:
        list.append(input())
        print(list)
    except KeyboardInterrupt:
        json.dump(list, open('database.json', 'w'))

这会将内容存储在一个名为 database.json 的文件中,您可以使用 CTRL+C 结束程序

【讨论】:

Gupta 我试过了,但是当我第二次运行程序时,列表内容被删除了 你正在使用关闭程序? PyCharm,我也希望能够在 PyCharm 中关闭它 另外我在 python 中尝试过并用 CTRL + C 关闭它,但也没有用 在except子句中json.dump(...之后做exit()【参考方案2】:

您需要一个持久层,即文件系统、数据库、pickleshelve 等,一旦程序终止,您可以在其中存储存在于list 中的数据。当您重新运行您的程序时,请确保它从同一个持久性存储中加载,而不是将其初始化为 [],这样您就可以存储附加到列表中的元素。

Python 提供了许多替代方案,如 here 所述

【讨论】:

【参考方案3】:

您需要先将列表保存在某处,然后在程序开始时加载它。由于它只是一个简单的列表,我们可以使用 python pickle 将其保存到磁盘,如下所示:

import pickle

try:
    with open('list.p', 'rb') as f:
        list = pickle.load(f)
except:
    list = []
while True:
    try:
        list.append(input())
        print(list)
    except KeyboardInterrupt:
        with open('list.p', 'wb') as f:
            pickle.dump(list, f)

【讨论】:

以上是关于Python保存列表更改的主要内容,如果未能解决你的问题,请参考以下文章

如何保存对 Python 列表所做的更改,以便在重新运行脚本后更新? [复制]

如何在 python 中永久保存列表?

如何在 Python 中使用 BeautifulSoup 保存对 HTML 文件所做的更改?

如何保存执行过程中更改的列表?

将更改(永久)保存在数组列表中?

从列表视图位置更改图像 alpha 并保存