9

下面的代码是我到目前为止所拥有的。当它写入 .csv 时,它会覆盖我之前在文件中写入的内容。我怎样才能以不会删除我以前的文本的方式写入文件。(我的代码的目标是让一个人输入他们的名字并让程序记住他们)

def main(src):
    try:
        input_file = open(src, "r")
    except IOError as error:
        print("Error: Cannot open '" + src + "' for processing.")
    print("Welcome to Learner!")
    print("What is your name? ")
    name = input()
    for line in input_file:
        w = line.split(",")
        for x in w:    
            if x.lower() == name.lower():
                print("I remember you "+ name.upper())
            else:
                print("NO")
                a = open("learner.csv", "w")
                a.write(name)
                a.close()
                break
if __name__ == "__main__":
    main("learner.csv")
4

3 回答 3

15

下次需要追加到文件中。这可以通过以附加模式打开文件来完成。

def addToFile(file, what):
    f = open(file, 'a').write(what) 
于 2012-11-02T22:28:33.413 回答
11

更改open("learner.csv", "w")open("learner.csv", "a")

open的第二个参数是mode,w是write,a是append。使用 append 它会自动寻找到文件的末尾。

于 2012-11-02T22:31:21.470 回答
6

您需要以附加模式('a')打开文件,而不是写入模式('w');Python 文档解释了可用的不同模式。

此外,您可能需要考虑使用 with 关键字:

在处理文件对象时,最好使用 with 关键字。这样做的好处是文件在其套件完成后正确关闭,即使在途中引发异常也是如此。

>>> with open('/tmp/workfile', 'a') as f:
...     f.write(your_input)
于 2012-11-02T22:31:23.843 回答