我有一些任意深度的目录,每个目录都包含一个具有一致名称的文件。在命令行中,我可以使用
find <dir> -name <filename> -print -quit
进行优化搜索:一旦找到文件,它就会停止查找目录。我可以做到这一点,因为它找到了我正在寻找的东西。
我可以使用 glob (或者我想是 os.walk)来做同样的事情。但是,一旦找到我要查找的文件,这两个选项似乎都无法停止:无论如何,它们都会索引完整目录 - globbing 会查找尽可能多的匹配项,而 os.walk 只允许我索引完成后进行过滤。 有没有办法在 Python 中获得优化的
find
行为,而不是在子进程中执行
find
?topdown=True
选项(默认),它不会首先生成整个层次结构;生成器一次返回一个目录。这允许您就地更改
os.walk()
值以防止其下降到某些子目录,并且还允许您尽早跳出循环。