glob()排除子目录

时间:2017-02-19 13:07:51

标签: python linux logging glob

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

在我的测试中,我使用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()来实现这一目标?

1 个答案:

答案 0 :(得分:1)

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

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