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】:
您需要一个持久层,即文件系统、数据库、pickle
、shelve
等,一旦程序终止,您可以在其中存储存在于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 列表所做的更改,以便在重新运行脚本后更新? [复制]