Python 如何确认文件是有效的csv文件
我有一个程序可以读取csv文件。有时用户会错误地尝试将Excel文件传递到程序中,我希望能够检测到这一点 目前,我犯了一个严重的错误,我似乎无法抓住它 一个简单的例子:Python 如何确认文件是有效的csv文件,python,csv,exception-handling,Python,Csv,Exception Handling,我有一个程序可以读取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
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
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"
当听写器试图读取第一行数据时,就会发生这种情况
我想做的是把这当作一个例外。不幸的是,这不是一个例外,它只是带着错误消息从我的代码中消失了
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
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"
没有捕获任何内容,错误仍然会从我的代码中爆发出来,而我的代码正处于处理许多文件的无限循环中
这里有一个类似的问题:
但是我想在我的代码中优雅地捕捉错误。如何才能做到这一点?您可以使用一般的尝试,但不捕获所有异常(请小心,因为这可能会很危险,会在代码中隐藏错误)
在使用
csv.DictReader
with open("file1.csv", "rb") as f:
print f.readline().split(",")
也许只要试一下,除了它?如果它抛出异常,那么您就无法处理它。还是继续吧。另外,请注意:您不应该捕获所有异常。@ssundarraj我知道这一点,我已经在我的回答中添加了一个关于这一点的警告,并且代码中的注释明确表示
ANY
exception