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)]
所以我正在编写一个脚本,它将遍历一堆日志文件以查找字符串和服务器名称。
在我的测试中,我使用 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)]