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

Python使用glob递归遍历含点子目录时无法获取内部文件问题

解决glob匹配带点目录时误将目录当作文件返回的问题

你遇到的问题根源在于glob.glob的*.*匹配规则——它会匹配任何名称中包含点的对象,包括名称带点的子目录。加上recursive=True后,**会遍历所有层级的子目录,所以那些带点的子目录会被当成符合*.*条件的结果返回,而非只返回目录内的文件。另外你代码里的路径写法也有问题:'c:\test\ID_1'+/**/*.*'存在语法错误,而且\t会被解析为制表符,导致路径无效。

方法一:用os.walk精准遍历所有文件

os.walk会明确区分目录和文件,直接遍历收集所有文件路径,完全不会受目录名带点的影响:

import os
# 用原始字符串避免转义问题
root_dir = r'c:\test\ID_1'
listaFile = []
for root, _, files in os.walk(root_dir):
    for file in files:
        listaFile.append(os.path.join(root, file))

方法二:glob结果后过滤目录

如果偏好使用glob,可以在获取结果后用os.path.isfile过滤掉目录,只保留文件:

import glob
import os
# 注意用原始字符串写路径,避免转义错误
listaFile = [
    file_path 
    for file_path in glob.glob(r'c:\test\ID_1\**\*.*', recursive=True)
    if os.path.isfile(file_path)
]

方法三:用glob.iglob边遍历边过滤(节省内存)

如果目录下文件很多,用glob.iglob迭代遍历,边遍历边过滤,避免一次性加载所有路径到内存:

import glob
import os
listaFile = []
for path in glob.iglob(r'c:\test\ID_1\**\*', recursive=True):
    if os.path.isfile(path):
        listaFile.append(path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:50:43