在数组中永久保存元素

1 投票
3 回答
2226 浏览
提问于 2025-04-18 05:56

我想知道在Python中是否可以实现标题所说的功能。让我更详细地解释一下。假设你有一个数组:

list = []

然后你有一个函数,它接受用户输入的字符串,并把它添加到这个数组里:

def appendStr(list):
   str = raw_input("Type in a string.")
   list.append(str)

我想知道是否可以保存用户在列表中所做的更改,即使程序关闭后也能保留。所以如果用户关闭程序,再重新打开,打印列表时,他/她添加的字符串也能显示出来。谢谢你的时间。这可能是个重复的问题,如果是的话我很抱歉,但我找不到其他类似的问题关于Python。

3 个回答

1

你需要把它保存到一个文件里:

写入文件

with open('output.txt', 'w') as f:
    for item in lst:              #note: don't call your variable list as that is a python reserved keyword
        f.write(str(item)+'\n')

从文件中读取(在程序开始时)

with open('output.txt') as f:
    lst = f.read().split('\n')
1

如果你要把一个字符串写入文件,这样做是个不错的选择。不过,如果你要保存的内容不是字符串,那么“序列化”可能是你需要了解的关键字。

相关的文档可以在这里找到: https://docs.python.org/2/library/pickle.html

我觉得这个帖子能回答你的问题: 如何在pickle文件中保存和加载多个对象?

1

一个更简单的解决办法是使用json格式。

import json
li = []
def getinput(li):
    li.append(raw_input("Type in a string: "))

要保存这个列表,你可以这样做:

savefile = file("backup.json", "w")
savefile.write(json.dumps(li))

要加载这个文件,你只需要这样做:

savefile = open("backup.json")
li = json.loads(savefile.read())

你可能还需要处理一下文件不存在的情况。需要注意的是,像类这样的复杂结构是不能直接存储为json格式的。

撰写回答