rows = get_rows() #returns a list of rows
for row in rows:
with open('output.csv', 'w') as fp:
a = csv.writer(fp, delimiter=',')
try:
data = compute(row['id']) #does some transforming of data on the row['id'] string data
except Exception:
pass
print data
a.writerow(data)
输出:
row1
row1
row1
row1
它一直在继续
我期待:
row1
row2
row3
row4
row5
so on
答案 0 :(得分:2)
我不认为这是你的整个问题,但行:
for row in rows:
with open('output.csv', 'w') as fp:
应该是另一种方式。如上所述,这将打开文件并为每一行关闭一次 - 这比您需要做的工作多得多。更重要的是,每次循环时它都会截断文件 - 丢失所有以前的工作,最终只留下文件中的一行。这样做是这样的:
with open('output.csv', 'w') as fp:
a = csv.writer(fp, delimiter=',')
for row in rows:
...