为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复我用来获取标准库 glob 文件夹中文件列表的模式?

如何修复我用来获取标准库 glob 文件夹中文件列表的模式?

慕沐林林 2021-11-09 14:32:51
我有以下文件:/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我想获取所有 .log 文件,除了以 .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我写了这个简单的代码:import globimport osglob_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如何修复这种模式?
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

使用 Pythex(一个 Python 正则表达式测试器),匹配字符串

glob_pattern = u'.*(\.log)(?!.*(gz)).*'

为您的目标工作得很好。


查看完整回答
反对 回复 2021-11-09
?
HUX布斯

TA贡献1876条经验 获得超6个赞

那不是全局模式。你不想glob。您想使用re模块函数来过滤os.listdir.


查看完整回答
反对 回复 2021-11-09
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

尝试 **/*.log!(*.gz)

使用 globster.xyz 进行测试


查看完整回答
反对 回复 2021-11-09
  • 3 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号