glob() 排除子目录

glob() to exclude sub-directories

所以我正在编写一个脚本,它将遍历一堆日志文件以查找字符串和服务器名称。

在我的测试中,我使用 glob() 创建一个文件列表来浏览。

但是,为了改进我的测试,我从实时系统 (11gb!) 复制了一个日志目录 - 事情不像以前那么顺利了。看起来 glob 将子目录视为文件,因此 readlines() 正在努力阅读它们。

我不关心子目录中的文件,我只想扫描本机目录中的文件。

我想我可以使用 os.walk() 来实现这一点,比如:

logs = next(os.walk('var/opt/server/log/current'))[2]

相对于:

logs = glob('/var/opt/server/log/current/*')

因为我正在学习 python,所以我想确保我以正确的方式学习。所以我上面所说的是否正确?或者我应该以稍微不同的方式使用 glob() 来实现这个目标?

使用 glob 并过滤掉所有目录:

logs = [log for log in glob('/var/opt/server/log/current/*') if not os.path.isdir(log)]