You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用单个glob匹配模式同时查找.yaml和.yml文件?

单个glob模式匹配.yml和.yaml文件的可行性

结论

Python标准库的glob模块无法通过单个Unix风格glob模式同时匹配.yml和.yaml文件。

原因分析

Unix风格glob仅支持以下有限的通配符规则:

  • *:匹配任意长度的任意字符(不含路径分隔符)
  • ?:匹配单个任意字符
  • []:匹配括号内的单个字符/字符范围

而.yml(4字符后缀)和.yaml(5字符后缀)的长度不同,glob语法没有“可选字符”的分支匹配能力(这类逻辑属于正则表达式的(a)?语法),因此无法用单个模式覆盖两种长度不同的后缀。

无效尝试解析

  • glob.glob("*.ya?ml"):该模式要求后缀为ya+1个任意字符+ml,总长度为5,仅能匹配.yaml,无法匹配长度为4的.yml,故返回空列表。
  • glob.glob("*.y[a]ml"):[a]仅匹配单个a,等价于*.yaml,只能匹配.yaml文件。

补充说明

若要通过单个表达式实现匹配,需借助正则表达式(比如结合os.listdir和re.match),但这已经脱离了纯glob模式的范畴。如果仅使用glob模块,只能通过两次调用glob.glob(glob.glob("*.yml") + glob.glob("*.yaml"))来实现需求。

内容的提问来源于stack exchange,提问作者no step on snek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:17:32