每次执行代码后永久增加python列表的大小

时间:2018-07-05 22:41:55

标签: python list persistence

我的代码以一个空列表开头:

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]
.
.
.

3 个答案:

答案 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