Python,如何将用户输入保存到lis

2024-09-30 05:28:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望获取一个包含数据的列表,并将其追加,以便下次执行代码时保存该列表。到目前为止,我有这个工作,但当我再次执行代码时,它不包括输入的新数据。有什么建议吗?

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()

Tags: the数据代码列表inputdatadef建议
3条回答

but when i execute the code again it does not include the new data that was entered

当然,因为名单在记忆里。您必须将其保存到文件或数据库中,才能使其持久。

例如,阅读Input and Output in python

如果要跨执行保存数据,“live”程序内存中的所有内容在执行结束时都会被丢弃,因此必须将数据保存到文件(或其他持久介质)中,然后将其读回。

可以将其保存为简单字符串,也可以使用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中出现重复项,则必须做一些工作来防止它们出现。

使用pickle

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")
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()

相关问题 更多 >

    热门问题