【发布时间】:2017-03-01 09:10:51
【问题描述】:
我正在通过在循环中添加每一行并使用字典来编写 csv 文件。以下是代码:
fieldnames = ['id', 'variable1', 'variable2']
f = open('file.csv', 'w')
my_writer = csv.DictWriter(f, fieldnames)
my_writer.writeheader()
f.close()
for i in something:
something where I get data for mydict
with open('file.csv', 'a+b') as f:
header = next(csv.reader(f))
dict_writer = csv.DictWriter(f, header)
dict_writer.writerow(mydict)
几年前我确信这段代码对我有用,但可能我使用的是 python2。现在我正在使用 python 3,它显示以下错误:
header = next(csv.reader(f))
StopIteration
可能是什么问题?谢谢
【问题讨论】:
-
旁白:由于您使用的是 Python 3,因此您不应该对文件使用二进制模式。请参阅(例如)here。
-
为什么您不断地重新打开/重新包装文件,而不是创建一次并一遍又一遍地使用它?标题不应该为每一行而改变。即使是这样,只是重新包装比一遍又一遍地重新打开附加更有意义。
标签: python python-3.x csv for-loop dictionary