0

我正在寻找一个包含数据的列表并将其附加,以便下次执行代码时保存。到目前为止,我有这个工作,但是当我再次执行代码时,它不包括输入的新数据。有什么建议么?

def the_list():

    data = ['data1', 'data2', 'data3 ' , 'data4', 'data5' ]

    for i in data:
        print (i)

    print (' would you like to add')
    a = input()

    if a == ('yes'):
        b = input()

        data.append(b)
        print (data) 

the_list()
4

3 回答 3

2

如果您的意思是在执行过程中保存数据,那么“实时”程序内存中的所有内容都会在执行结束时被丢弃,因此您必须将数据保存到文件(或其他一些持久性介质)中,然后再将其读回。

您可以将简单的字符串保存到文件中,也可以pickle用来轻松序列化列表等对象。

使用简单的字符串

用代码包装您的程序以加载数据并将数据保存到文件中:

data=[]
try:
    old_data= open("save_data", "r").read().split('\n')
    data.extend(old_data)
except: 
    print ("Unable to load old data!")
    data = ['data1', 'data2', 'data3 ' , 'data4', 'data5' ]

#YOUR PROGRAM HERE

try:
    with open("save_data", "w") as out:
        out.write('\n'.join(data))
except:
    print ("Unable to write data!")

当然,data如果不能出现重复项,您必须做一些工作来防止出现重复项。

使用泡菜

import pickle

data_fn = "save_data"
data=[]
try: 
    with open(data_fn, "rb") as data_in:
        old_data = pickle.load(data_in)
        data.extend(old_data)
except: 
    print ("Unable to load last data")
    data = ['data1', 'data2', 'data3 ' , 'data4', 'data5' ]


#REST OF YOUR PROGRAM

try: 
    with open(data_fn, "w") as data_out:
        pickle.dump(data, data_out)
except:
    print ("Unable to save data")
于 2013-10-09T02:07:10.637 回答
1
def the_list():
    try:
        with open('data.txt', 'r') as f:
            data = [line.strip() for line in f]
    except:
        data = []

    for i in data:
        print(i)

    print (' would you like to add')
    a = raw_input()

    if a == 'yes':
        b = input()

        data.append(b)
        print (data)

    with open('data.txt', 'r') as nf:
        nf.write('\n'.join(data))
the_list()
于 2013-10-09T02:12:48.337 回答
0

但是当我再次执行代码时,它不包括输入的新数据

当然,因为列表在内存中。您必须将其保存到文件或数据库中才能持久保存。

例如,阅读有关Python 中的输入和输出的信息。

于 2013-10-09T02:03:00.330 回答