【发布时间】:2017-12-30 13:53:37
【问题描述】:
我的代码抛出这个错误:
File "testdata.py", line 35, in <module>
for row in reader:
File "C:\Python36\lib\csv.py", line 111, in __next__
self.fieldnames
File "C:\Python36\lib\csv.py", line 98, in fieldnames
self._fieldnames = next(self.reader)
_csv.Error: iterator should return strings, not bytes (did you open the
file in text mode?)
我关注了这个tutorial,并多次做了视频上的所有操作,并在这里寻找类似的问题,但到目前为止我还没有找到解决我的问题的方法。
These are the files used in the video.
此错误与this 不同,我尝试使用该修复程序但它导致我出现另一个错误。
我的代码:
filename = "data.csv"
temp_file = NamedTemporaryFile(delete=False)
with open(filename, "rb") as csvfile, temp_file:
reader = csv.DictReader(csvfile)
fieldnames = ['id', 'name', 'email', 'amount', 'sent']
writer = csv.DictWriter(temp_file, fieldnames=fieldnames)
#writer.writeheader()
for row in reader:
print(row)
writer.writerow({
"id": row["id"],
"name": row["name"],
"email": row["email"],
"amount": "1293.33",
"sent": "",
})
【问题讨论】:
-
您已将文件打开为“rb” - 只需使用“r”...?
-
将“错误:迭代器应返回字符串,而不是字节”粘贴到 Google 中,您将获得 许多 个如何解决此问题的示例。可以轻松复制和粘贴的跟踪消息是 Python 对新开发人员如此友好的原因之一。
-
我尝试了该修复,但没有成功。它导致我另一个错误
标签: python-3.x csv