2014-02-10 64 views
0

我試圖使用xlrd庫來組織大量的.DTA文件。與文件擴展名更改相關的python xlrd錯誤

我發現的第一件事就是.DTA文件可以通過改變擴展名.xls並在Excel中打開它們而導出爲ex​​cel文件。它會在您打開時發出警告,提供有關可能損壞的文件的錯誤,但會以其他方式正常打開。

the file you are trying to open is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

當蟒蛇然而,當我嘗試打開該文件,我得到的是沒有有用的信息,這一點我敢肯定是通過文件的擴展名問題引起的錯誤。

File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1323, in getbof raise XLRDError('Expected BOF record; found 0x%04x' % opcode) XLRDError: Expected BOF record; found 0x5845

我想我的代碼通過剪切和粘貼數據到一個新的Excel文件並將其命名爲同樣的事情,它的工作,所以我敢肯定這是問題,但我有太多文件能夠爲每個人單獨做到這一點。

有沒有更好的方法來解決這個問題?抑制錯誤或實際改變文件類型,而不僅僅是它的擴展?

+0

您可以使用文本編輯器打開文件,刪除所有內容,直到可見的第一個字符以不同的名稱保存文件,然後使用Excel重新打開文件,然後如果沒有用Python打開任何警告。我們有這個問題,如果我記得問題的名字,我會寫一個答案,但實際上只是打開使用一個讀取,除了第一個字符mystring = open(file).read(),mystring = mystring [1:] – PyNEwbie

+0

我有數百個文件進行排序,手動更改東西不是一個選項。 – Ahmed

+0

只要做一個確認是否是這種情況,如果它正在更改文件將很容易 - 仔細閱讀我的評論 – PyNEwbie

回答

0

我認爲有一個字節順序標記在文件的開頭是不可觀察但存在的。這個答案描述瞭如何去除它。< converting utf-16 -> utf-8 AND remove BOM>。

+0

我不太清楚如何使用此代碼。 ''' 張開(ff_name, 'RB')作爲SOURCE_FILE: 開放(target_file_name, 'W + B')作爲dest_file: 內容= source_file.read() dest_file.write(contents.decode( 'utf-16')。encode('utf-8')) ''' 我用我正在讀取的文件替換'''ff_name''',並用文件'target_file_name'替換寫入和代碼執行,但我仍然有一個錯誤。我有使用這個權利嗎? – Ahmed

+0

將代碼粘貼到您的答案中以便我可以看到它會更好。更重要的是粘貼錯誤信息。 – PyNEwbie