我有一個程序,它讀取csv文件。有時用戶錯誤地嘗試將Excel文件傳遞到程序中,我想檢測這些。如何確認一個文件是一個有效的csv文件
目前,我得到一個令人討厭的錯誤,我似乎無法趕上它。
一個簡單的例子:
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
但我想優雅地捕捉錯誤在我的代碼。我怎樣才能做到這一點?
也許只是嘗試,但它之前檢測類型?如果它拋出異常,那麼你就無能爲力了。不妨繼續前進。此外,檢查了這一點:http://stackoverflow.com/a/2985005/4029893 –