我的代码以一个空列表开头:
l = []
让我们说,我想在每次运行代码时将5个元素添加到列表中:
l += [0, 0, 0, 0, 0]
print(l) . # reuslt is l = [0, 0, 0, 0, 0]
代码执行后,此信息丢失。 我想知道每次重新运行代码时,列表如何保持5个零。
first run >>> [0, 0, 0, 0, 0]
second run >>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
third run >>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
.
.
.
答案 0 :(得分:1)
根据定义,所有程序变量都在程序范围内。退出程序时,操作系统将收回空间。为了使数据在程序结束后得以持久保存,您需要将其存储在其他位置,例如文件中-这是Python运行时系统易失性范围之外的资源。
我相信您可以查找文件操作。
答案 1 :(得分:1)
您需要在两次运行之间保留数据。一种实现方法是使用pickle
模块,我将在此处演示它,因为它非常简单。另一种选择是使用JSON
。这些方法可以保存(或序列化)Python数据对象。这不同于仅将文本写入文本文件。
import pickle
my_list = [0, 0, 0, 0, 0]
# Save my_list
file = open("save.txt", "wb") # "wb" means write binary (as opposed to plain text)
pickle.dump(my_list, file)
file.close()
# Close and restart your Python session
file = open("save.txt", "rb") # "rb" means read binary
new_list = pickle.load(file)
file.close()
print(new_list) # -> [0, 0, 0, 0, 0]
编辑:您表示希望每次运行代码时自动对列表进行添加。您可以通过在加载后追加然后再次保存来实现此目的。
import pickle
# Create an empty list
my_list = []
# Try to load the existing list in a try block in case the file does not exist:
try:
file = open("save.txt", "rb") # "rb" means read binary
loaded_list = pickle.load(file)
file.close()
my_list += loaded_list
except (OSError, IOError):
print("File does not exist")
# Append to the list as you want
my_list += [0, 0, 0, 0, 0]
# Save the list again
file = open("save.txt", "wb")
pickle.dump(my_list, file)
file.close()
print(my_list) # This will get bigger every time the script in run
答案 2 :(得分:0)
执行后,您将丢失ram中的所有数据。因此,在该过程结束之后,将无法将列表保留在ram中。您必须将列表写入文件,并在每次执行代码时读取该文件。
这可能会帮助: http://www.pythonforbeginners.com/files/reading-and-writing-files-in-python