Python CSV 覆盖写入

7

我正在尝试编写这段代码,以便一旦结束,先前的答案将被保存,并且可以再次运行代码而不会覆盖旧答案。我将how、why和scale_of_ten变量移入“with open”部分,并且成功地使代码能够在文件执行的次数内工作,但每次执行时旧答案都会被覆盖。如何编写代码以保存旧答案并同时接收新答案?

import csv
import datetime
# imports modules

now = datetime.datetime.now()
# define current time when file is executed

how = str(raw_input("How are you doing?"))
why = str(raw_input("Why do you feel that way?"))
scale_of_ten = int(raw_input("On a scale of 1-10. With 10 being happy and 1 being sad. How happy are you?"))
#creates variables for csv file

x = [now.strftime("%Y-%m-%d %H:%M"),how,why,scale_of_ten]
# creates list for variables to be written in

with open ('happy.csv','wb') as f:
    wtr = csv.writer(f)
    wtr.writerow(x)
    wtr.writerow(x)
    f.close()

3
如果你已经在使用with语句,就不需要再次关闭文件。 - aIKid
1个回答

9

使用w模式,open函数会截断文件。建议使用a(追加)模式。

....

with open ('happy.csv', 'ab') as f:
    #                    ^
    ....

顺便提一下,如果你使用with语句,就不需要使用f.close()了。


那我只需要去掉 f.close() 这一行,然后将 'wb' 改为 'ab'? - Robert Birch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接