所以我正在编写一个脚本,它会查看一堆日志文件,查找字符串和服务器名称。
在我的测试中,我使用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()
来实现这一目标?
答案 0 :(得分:1)
使用glob并过滤掉所有目录:
logs = [log for log in glob('/var/opt/server/log/current/*') if not os.path.isdir(log)]