2013-02-05 86 views
1

我試圖做一些我認爲應該非常直接的事情,但似乎並不存在作爲xlrd Book Class的屬性。由xlrd,python處理的顯示文件名。 Book類的文件名屬性

在解析目錄中的所有xlsx文件時,我想記錄哪些文件中存在哪些錯誤。爲了做到這一點,我需要打印正在處理的文件名。

目標:正在由xlrd處理的文件的打印名稱。即: 「filename.xlsx」 的例子在下面

示例代碼:

Wb = xlrd.open_workbook ("./data/excel_files/filename.xlsx") 
print "File being processed is: %s" % Wb.name_obj_list[0].name 

此輸出 「_xlnm._FilterDatabase」。我想打印「filename.xlsx」。 Book Class的文檔沒有簡單的方法來完成此操作。 http://www.lexicon.net/sjmachin/xlrd.html#xlrd.Book-class

有什麼建議嗎?

+1

工作簿對象本身沒有任何內容表明它駐留在哪個文件中。您可以通過獲取任何Excel文件並使用不同的名稱複製該文件來查看此內容。這兩個文件是字節對字節相同的,但名稱不同。因此,即使原始工作簿在某處存儲了其文件的名稱,該副本也會在其內部存儲錯誤的名稱。另外,'open_workbook'方法可以以原始文件內容的形式接受輸入(作爲字節串),在這種情況下,將不存在名稱和句點。 –

回答

0

嘗試簡單的方法:

for filename in glob('*.xls*'): 
    try: 
     wb = xlrd.open_workbook(filename) 
    except xlrd.XLRDERROR: 
     print 'Problem processing {}'.format(filename) 
+0

與此問題是對象Wb被傳遞到Excel解析文件。我想我也可以通過文件名,但認爲可能有一種方法從Wb對象中提取它。 – ccdpowell

0

我剛剛通過的文件名與世行對象從另一個類,並打印了。