2014-07-25 43 views
0

我有以下幾點:爲什麼Python的os.walk默默地失敗?

def crawl(rootdir): 
    for dir, subdir, files in os.walk(rootdir): 
     for file in files: 
      print "file found: %s" % file` 

在我的理解,如果我把這種上不存在的ROOTDIR,我應該得到一個錯誤。相反,它似乎悄然失敗。我很少關心如何解決這個問題(儘管任何以pythonic方式做出的評論都會有所幫助),並且更加理解爲什麼會發生這種情況。

回答

4

您是否閱讀過文檔?引用:。

「默認情況下,從listdir同時()調用錯誤被忽略。如果指定可選參數onerror的是,它應該是一個函數,它會用一個參數來調用,一個OSERROR比如,它可以報告錯誤繼續行走,或者拋出異常終止漫遊。請注意,文件名可用作異常對象的文件名屬性。「

這是微不足道的去了解它背後的基本原理,以及:它更加靈活選擇什麼在錯誤的情況下做的,因爲listdir錯誤可能不會被這樣的所有應用程序處理。

0

os.walk documentation所述,您需要指定一個onerror函數,該函數將OSError作爲參數來獲取錯誤。
然後你可以選擇你想用它做什麼。