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

glob.glob与pathlib.Path.glob处理隐藏文件的差异及合理性问询

glob.glob与pathlib.Path.glob处理隐藏文件的差异是预期设计吗?

这绝对是预期的设计差异,两个工具的行为逻辑从根源上就不一样~

关于glob模块的行为

glob模块从诞生起就是模拟传统Unix shell的glob匹配规则,它的官方文档明确说明:以点(.)开头的文件名会被特殊处理——默认情况下,*、?这类通配符不会匹配以点开头的隐藏文件。所以当你执行glob.glob('test/*')时,只会匹配test/目录下不以点开头的文件,自然就漏掉了.bar。

示例代码:

>>> glob.glob('test/*')
['test/foo']

关于pathlib.Path.glob的行为

而pathlib作为Python 3.4引入的面向对象文件系统操作库,设计思路更偏向于提供完整的文件系统遍历能力,并没有遵循shell的隐藏文件过滤规则。这里的*通配符会匹配目录下所有条目(除了.和..这两个特殊目录),不管文件名是否以点开头,因此能同时列出.bar和foo。

示例代码:

>>> list(Path('test').glob('*'))
[PosixPath('test/.bar'), PosixPath('test/foo')]

简单总结:glob是跟着shell规则走,默认过滤隐藏文件;pathlib则追求遍历的完整性,默认不做过滤,两者的差异完全是设计目标不同导致的,并非疏漏或错误。

内容的提问来源于stack exchange,提问作者Aran-Fey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:13:38