如何写入CSV而不是覆盖过去的文本

时间:2012-11-02 22:25:51

标签: python python-3.x

以下代码是我目前所拥有的。当它写入.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")

3 个答案:

答案 0 :(得分:8)

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

打开的第二个参数是模式,w是写入,a是追加。使用追加它会自动寻找到文件的末尾。

答案 1 :(得分:7)

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

def addToFile(file, what):
    f = open(file, 'a').write(what) 

答案 2 :(得分:5)

你想要以append-mode('a')打开文件,而不是写模式('w'); Python documentation解释了可用的不同模式。

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

  

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

>>> with open('/tmp/workfile', 'a') as f:
...     f.write(your_input)