2013-08-02 25 views
3

我使用python os.walk()來獲取某些目錄中的文件和目錄,但是有名稱太長(> 300),os .walk()不返回任何東西,使用onerror我得到'[錯誤234]更多的數據可用'。我試圖使用良率,但也沒有得到,並顯示'追蹤:StopIteration'。Python的os.walk()在Windows中有長文件名時失敗

操作系統是windows,代碼很簡單。我已經測試了一個目錄,如果有長名文件,就會出現問題,而如果用短名稱重命名長名稱文件,代碼可以得到正確的結果。

我對這些目錄無能爲力,例如重命名或移動長名稱文件。 請幫我解決問題!

def t(a): 
    for root,dirs,files in os.walk(a): 
    print root,dirs,files 
t('c:/test/1') 
+2

我不知道什麼操作系統可以讓你有很長的名稱文件。 – PepperoniPizza

+4

你能提供一些更多的細節嗎?你在使用什麼操作系統,你能告訴我們一個代碼的最小版本來證明問題嗎? – larsks

+0

窗口,代碼簡單,沒有任何特別的:對於root,dirs,os.walk中的文件(...):print root。我測試過,如果用短名稱重命名長名稱文件,代碼可以得到正確的結果。 – user2646309

回答

4

在Windows中的文件名(包括路徑)不能超過255個字符,所以你看到的錯誤來自於Windows中,不是從Python的 - 因爲你不知何故設法創造這麼大的文件名,但現在你無法閱讀它們。有關更多詳細信息,請參閱此post

+0

當使用os.walk()時,如何忽略長名稱文件並獲取名稱不長的其他文件和目錄? – user2646309

+0

我嘗試了一些文件搜索工具,他們找不到長名稱的文件,但可以找到同一目錄中的所有其他文件! – user2646309

+0

我試過使用try..except ...的catch異常,但是沒用 – user2646309

相關問題