如何在python中将项添加到列表并保存

时间:2016-08-12 16:29:23

标签: python

我的程序已设置好,所以我可以在终端列表中添加项目,但每当我执行此操作时,例如myFile.append('hello')它会将其保留在那里,但是当我退出终端并再次执行此操作时,'hello'将被删除。请帮忙。谢谢!

代码

elif userInput in command:
    print("Okay, Initializing new command.\n\n")
    command1 = raw_input("Which command would you like to add?\nKeyword\nLater Versions\n ").lower()
    if command1 == 'keyword':
        print('You selected keyword, to exit press enter')
        command2 = raw_input("Which Keyword would you like to edit? ")
        if command2 == 'calc':
            command3 = raw_input("Which Keyword would you like to add? ")
            calc.append(command3)
            print(calc)

1 个答案:

答案 0 :(得分:3)

尝试类似:

with open(myFile, 'a') as f:
    f.write('hello')

您可以使用.append附加到列表,但不能附加到文件。相反,你可以使用' a'如上标记以附加到文件myFile,其中myFile是文件路径。

更新

根据您现有的代码和您想要实现的目标,试试这个:

...


elif userInput in command:
    print("Okay, Initializing new command.\n\n")
    command1 = raw_input("Which command would you like to add?\nKeyword\nLater Versions\n ").lower()
    if command1 == 'keyword':
        print('You selected keyword, to exit press enter')
        command2 = raw_input("Which Keyword would you like to edit? ")
        if command2 == 'calc':
            command3 = raw_input("Which Keyword would you like to add? ")
            calc = 'path/to/file'
            with open(calc, 'a+') as f:
                f.write(command3 + '\n')
                f.seek(0) #This brings you back to the start of the file, because appending will bring it to the end
                print(f.readlines())

基本上,您正在写入文件,并打印写入该文件的所有单词的列表。 'a+'标志将允许您打开文件进行读写。此外,代替/除了打印"列表"使用print(f.readlines()),您可以将其分配给变量并具有实际的python list对象,以便稍后进行操作(如果这是您想要的):wordlist = f.readlines()

此外,为了提高您对该问题的基本了解,您应该查看thisthis

更新2

如果您需要在代码的前面加上list个关键字,可以添加:

 with open('wordlist.txt', 'a+') as f: #wordlist.txt can be changed to be another file name or a path to a file
     f.seek(0) #opening with `'a+'` because it will create the file if it does not exist, 
               # and seeking because `'a+'` moves to the end of the file 
     calc = f.readlines()

这将读取wordlist.txt中的单词列表,并将其保存到名为list的Python calc中。现在calc是一个实际的Python list对象,您可以使用calc.append('whatever')。稍后在您的代码中,当您想要将所有关键字保存回持久性"列表" (实际上只是一个文字文件,其中的单词用换行符分隔('\n'),你可以这样做:

with open('wordlist.txt', 'w+') as f:
    for word in calc:
        f.write(word)
    f.seek(0)
    print(f.readlines())

这将覆盖您的wordlist文件,其中包含当前calc列表中的所有单词,并将所有值打印到控制台。

在没有真正理解你的程序应该如何工作或自己编写的情况下,这是我能做的最好的事情。尝试提高您对Python文件I / O的理解;它不是那么复杂的一些实践,并将在未来为您提供简单的持久数据。我还建议在Codecademy上阅读像this one这样的Python教程,以提高对Python工作原理的一般理解。我并不是说这是一种侮辱;我不久前自己做了这个教程,它确实帮助我创建了Python基础知识的良好基础。它还包括a lesson on file I/O。祝你好运!