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

如何使用Python在指定目录(含子文件夹)中全域搜索文件

遍历目录及子文件夹查找目标文件的Python实现

方法一:改进glob.glob()的用法

你之前用glob.glob()只能搜索当前目录,是因为没启用递归模式。加上recursive=True参数,并配合**通配符(匹配任意层级的子文件夹),就能实现递归遍历:

import glob
import os

def find_target_file(target_dir, filename):
    # 构造递归搜索的路径模式
    search_path = os.path.join(target_dir, '**', filename)
    # 开启递归遍历,获取所有匹配的文件路径
    matched_files = glob.glob(search_path, recursive=True)
    return matched_files

# 示例调用
target_dir = "/your/target/directory"
target_name = "test.py"
results = find_target_file(target_dir, target_name)

if results:
    print("找到以下目标文件:")
    for path in results:
        print(path)
else:
    print("未找到指定文件")

方法二:使用os.walk()遍历目录树

os.walk()是Python内置的目录遍历工具,会逐层遍历目录及其子文件夹,适合需要更灵活控制的场景:

import os

def find_target_file(target_dir, filename):
    matched_files = []
    # root:当前遍历的目录路径;dirs:当前目录下的子文件夹列表;files:当前目录下的文件列表
    for root, dirs, files in os.walk(target_dir):
        if filename in files:
            # 拼接完整文件路径并加入结果列表
            full_path = os.path.join(root, filename)
            matched_files.append(full_path)
    return matched_files

# 示例调用
target_dir = "/your/target/directory"
target_name = "test.py"
results = find_target_file(target_dir, target_name)

if results:
    print("找到以下目标文件:")
    for path in results:
        print(path)
else:
    print("未找到指定文件")

两种方法对比

  • glob.glob():代码更简洁,适合快速实现递归搜索需求
  • os.walk():遍历过程中可以对文件夹、文件做额外过滤或处理,灵活性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:55:31