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

Python中os.walk与glob.glob统计文件数量结果差异问询

两个统计方法的核心差异及结果不一致原因

核心差异

os.walk是对目标路径做全量递归遍历,原生区分文件和目录,返回的files列表直接包含当前目录下所有文件,不受文件名格式、后缀限制;而glob.glob是依赖你传入的匹配规则做路径匹配,默认不区分文件和目录,匹配结果完全受通配符规则限制。

结果不一致的具体原因

  • 最核心原因:你使用的glob通配符是*.*,该规则仅能匹配文件名中包含.的文件(即带扩展名的文件),所有无扩展名的文件(比如无后缀的笔记、系统缓存文件、README、LICENSE这类无后缀文件)都会被过滤掉,这就是两者差了近7000个文件的主要来源。
  • 次要原因:glob.glob返回的结果同时包含匹配到的文件和目录,如果你没有额外做os.path.isfile()判断,会把符合*.*规则的目录也统计进去,不过这一因素在你的场景中会让统计结果偏多,不是偏少的原因。
  • 补充场景:Windows环境下如果目标路径中存在超长路径(超过260字符),旧版本Python的glob可能无法识别这类路径,也会导致统计结果偏少。

修正glob统计的方案

如果要让glob和os.walk的统计结果一致,可以修改匹配规则+增加文件判断:

import glob
import os

files = [p for p in glob.glob('C:\\Users\\fibi\\Documents\\**\\*', recursive=True) if os.path.isfile(p)]
print(len(files))

内容的提问来源于stack exchange,提问作者user3283415

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:15:04