在数组中永久保存元素
我想知道在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格式的。