我有几个任意深度的目录,每个目录都包含一个名称一致的文件。在命令行中,我可以使用 find <dir> -name <filename> -print -quit 对于优化搜索:一旦找到文件,它就停止在目录中查找。我能做到这一点,因为它正是我想要的。
find <dir> -name <filename> -print -quit
我可以用glob(或者os.walk,我想)做同样的事情。但这两种选择似乎都没有办法 停止 一旦找到我要查找的文件:不管怎样,都对整个目录进行索引-globbing会查找尽可能多的匹配项,os.walk只允许我在索引完成后进行筛选。
有没有办法优化 find Python中的行为,而不是执行 发现 在子流程中?
find
发现
如果您使用 topdown=True 的选项 os.walk() ,默认情况下,它不会首先生成整个层次结构;生成器一次返回一个目录。这允许您更改 dirlist 值,以防止它下降到某些子目录中,还允许您尽早脱离循环。
topdown=True
os.walk()
dirlist