【发布时间】:2015-06-25 07:38:03
【问题描述】:
我有一个读取 csv 文件的程序。有时用户错误地尝试将 Excel 文件传递到程序中,我想检测一下。
目前,我遇到了一个严重的错误,我似乎无法捕捉到它。
一个简单的例子:
from csv import DictReader
with open("an_excel_file_pretending_to_be_a_csv_file.csv", "rb") as f:
reader = csv.DictReader(f)
for row in reader:
print(row)
这会产生以下错误消息。
for row in reader:
File "c:\Python27\Lib\csv.py", line 107, in next
self.fieldnames
File "c:\Python27\Lib\csv.py", line 90, in fieldnames
self._fieldnames = self.reader.next()
Error: line contains NULL byte
当 DictReader 尝试读取第一行数据时会发生这种情况。
我想做的就是将此作为异常捕获。不幸的是,这不是例外,它只是在我的代码中出现错误消息。
from csv import DictReader
with open("an_excel_file_pretending_to_be_a_csv_file.csv", "rb") as f:
reader = csv.DictReader(f)
try:
for row in reader:
print(row)
except Exception:
print "error"
没有捕获任何内容,错误仍然出现在我的代码中,该代码处于处理许多文件的无限循环中。
这里有一个类似的问题:Python CSV error: line contains NULL byte
但我想在我的代码中优雅地捕捉到错误。我该怎么做?
【问题讨论】:
-
也许只是尝试-除了它?如果它抛出异常,那么您将无能为力。还不如继续前进。另外,请查看:stackoverflow.com/a/2985005/4029893
标签: python csv exception-handling