glob() 排除子目录

jon*_*mix 3 python linux logging glob

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

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

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

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

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

logs = next(os.walk('var/opt/server/log/current'))[2]
Run Code Online (Sandbox Code Playgroud)

与之相反:

logs = glob('/var/opt/server/log/current/*')
Run Code Online (Sandbox Code Playgroud)

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

lol*_*pop 6

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

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