附加到列表不会保留程序重启的最后一个输入?

时间:2017-01-14 11:41:49

标签: python list dictionary

我正在努力学习Python。

以下代码的目标:要形成一个更大的文件的一部分,我将在其中检查所有信息,如地址,电子邮件添加,联系人等是否在列表中更新(我不确定是否使用列表,数组或字典?)。如果是的话,我希望它能为客户提供各种选择。

以下代码基本上是检查列表中是否存在客户。如果没有,则应将c中的客户名称添加到列表中。

当我运行该程序时,它可以工作。但是一旦我重新启动程序,最后添加的程序,即如果我在程序的最后一次运行中输入客户为:ABC,则不在列表中。

有人能指出我正确的方向吗?我还可以将列表中的值传递给多个词典作为要添加的其他值的键,即电子邮件地址等吗?

customer = ['GMS']
print ("Enter Customer Name:")
c = input()
if c in customer:
    print ("Customer Exsists")

else:
    customer.append(c)
    print ("Added to list")

3 个答案:

答案 0 :(得分:2)

Q1:您的数据在一个执行实例中驻留在memory。程序退出时,memory将被释放,您的数据不会自动存储在其他位置。您可以使用您喜欢的格式将其存储到数据持久的disk。在您学习的这一刻,只需写一个文件就可以为您服务。

Q2:是的,你可以使用字典。

答案 1 :(得分:2)

你的程序一切正常。它确实输入了 附在列表中。

然而,程序中的所有数据将在程序发布后立即消失 退出。保持跨运行信息的唯一方法是保存 某种持久存储中的信息。正如Rok Novosel所提到的那样 在评论中,这可以使用pickle模块完成,但作为一个 初学者,你可能想把它推迟到以后。

在你学习的这个阶段,我建议你查看文件 操作:开启,关闭,阅读和写作。对于单个列表 像这样,writelines()readlines()文件方法就是这样 分别是保存和恢复的最简单方法。

至于你的字典问题:是的,因为你确定了 客户名称是唯一的,您可以将它们用作字典键。存储 那些数据会更复杂;你可以使用pickle,或者解决问题 用于解析输入的文件结构。

答案 2 :(得分:0)

打开文件并在列表中阅读

with open('file', 'r') as f:
    customers = list(f)
    f.close()

做你想要列出的任何事情。然后写入文件。 将客户留在硬盘上。

with open('file', 'w') as f:
    for l in f:
        f.write(str(l) + '\n')
    f.close()