2016-09-05 71 views
0

我正在使用xlrd 0.9.4我想驗證一下我必須打開的文件是否有效。xlrd - 開放文件問題

要做到這一點,我寫了這個代碼in according with this question

try: 
    book = xlrd.open_workbook(file_path) 
    print "Done" 
except XLRDError: 
    print "Wrong type of file." 

其中FILE_PATH是我的文件的路徑。

這工作正常,問題如下。首先我有一個有效的.xls文件,所以腳本打印完成。現在,假定有效的.xls文件被重命名(也是擴展名),例如從test.xls到test.txt。

如果我運行腳本,我有相同的結果(完成)。相反,如果我使用「真實」.txt文件(空或帶有一些文本),腳本將打印錯誤的文件類型。

發生此行爲是因爲文件的「結構」沒有更改?難道我做錯了什麼?除分支外,還有另外一種類型的異常,我可以添加到

在此先感謝

+0

您可以使用'if file_path.endswith(「。xls」)或file_path.endswith(「。xlsx」):'來測試擴展名。 – Andrew

+0

「有效」是什麼意思? –

+4

關於這種行爲究竟是怎麼樣的,不是你期望的?對我完全意義。文件的名稱/擴展名與其內容無關。事實上 - 輸入甚至可以是一個StringIO對象,因此甚至不會有物理文件名......您問圖書館是否可以將數據作爲有效的工作簿進行處理,並且上述代碼完全符合...... –

回答

2

你可以看到如何在讀取前檢查文件xlrd。在xldr source的第18-19行定義了一個«magic»字節。文件的第一個字節與第85行的這個字節序列進行比較。如果它的不同例外將會上升。文件擴展沒有涉及。

可以找到不同文件類型的簽名there

+0

非常感謝你! – Giordano