我有以下文件:
/tmp/test_glob/client.log.71.gz
/tmp/test_glob/client.log.63.gz
/tmp/test_glob/client.log.11
/tmp/test_glob/core_dump.log
/tmp/test_glob/client.log.32
/tmp/test_glob/dm.log
/tmp/test_glob/client.log
/tmp/test_glob/client.log.1
/tmp/test_glob/client.log.64.gz
我想获取所有以.gz结尾的.log文件,但文件除外。 所需的结果应该是以下内容:
/tmp/test_glob/client.log.11
/tmp/test_glob/core_dump.log
/tmp/test_glob/client.log.32
/tmp/test_glob/dm.log
/tmp/test_glob/client.log
/tmp/test_glob/client.log.1
我已经编写了以下简单代码:
import glob
import os
glob_pattern = u'*.log*'
for log_path in glob.glob(os.path.join('/tmp/test_glob', glob_pattern)):
print('log_path: ', log_path)
但是它返回文件夹/ tmp / test_glob /
中的所有文件我试图像这样修改这种模式:
glob_pattern = u'*.log.[0-9][0-9]'
但仅返回
/tmp/test_glob/client.log.11
/tmp/test_glob/client.log.32
如何修复此模式?
答案 0 :(得分:1)
使用Pythex(Python正则表达式测试器),匹配字符串
glob_pattern = u'.*(\.log)(?!.*(gz)).*'
为您的目标而努力。
答案 1 :(得分:0)
尝试**/*.log!(*.gz)
答案 2 :(得分:0)
这不是全局模式。您不需要glob
。您想使用re
模块函数来过滤os.listdir
的结果。