为什么 Python 的 os.walk 会无声无息地失败?

Chr*_*vCB 3 python python-2.7

我有以下几点:

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

根据我的理解,如果我在一个不存在的 rootdir 上调用它,我应该得到一个错误。相反,它似乎悄悄地失败了。我不太关心如何解决这个问题(尽管对 Pythonic 方法的任何评论都会有所帮助),而更多地了解它为什么会发生。

Mic*_*kis 5

你读过文档吗?引用:

“默认情况下,忽略 listdir() 调用的错误。如果指定了可选参数 onerror,它应该是一个函数;它将使用一个参数调用,一个 OSError 实例。它可以报告错误以继续执行,或引发异常以中止遍历。请注意,文件名可用作异常对象的文件名属性。”

理解其背后的基本原理也是微不足道的:选择发生错误时的处理方式要灵活得多,因为listdir并非所有应用程序都如此对待错误。