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