python在写入csv文件时,为什么它会在同一行中永远循环?

时间:2014-03-22 07:19:47

标签: python csv

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  

1 个答案:

答案 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:
       ...