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

Python实现搜索包含指定子文件夹名的子目录内所有文件

扫描名称含'May'的子文件夹中的文件

下面给你几种适合新手的实现方式,都是基于你提到的几个库:

方法1:使用glob库

glob的通配符匹配很适合这种场景,一行就能搞定递归查找:

import glob

# 匹配C:/main下所有二级目录中带May的文件夹,递归获取里面的所有文件
file_list = glob.glob('C:/main/*/May*/**/*', recursive=True)

# 打印所有找到的文件路径
for file_path in file_list:
    print(file_path)
  • *:匹配任意长度的任意字符(除了路径分隔符)
  • **:开启递归后,匹配任意深度的子目录
  • recursive=True:必须加上才能让**生效

方法2:使用pathlib库(Python3.4+推荐)

pathlib是更现代的路径处理库,语法更直观:

from pathlib import Path

# 定义根目录
root = Path('C:/main')

# 递归查找所有名称包含May的文件夹
for may_folder in root.rglob('May*'):
    if may_folder.is_dir():  # 确保找到的是文件夹
        # 遍历该文件夹下的所有文件
        for file in may_folder.iterdir():
            if file.is_file():  # 只筛选文件,排除子目录
                print(file)
  • rglob('May*'):递归查找所有名称以May开头的路径(也可以改成'*May*'匹配任意位置含May的)
  • is_dir()和is_file():用来区分文件夹和文件,避免误输出

方法3:使用os.walk库(传统通用方法)

os.walk是最基础的目录遍历方法,兼容性好,适合理解底层逻辑:

import os

root_dir = 'C:/main'

# 遍历根目录下的所有层级
for current_path, subfolders, files in os.walk(root_dir):
    # 检查当前目录的名称是否包含May
    if 'May' in os.path.basename(current_path):
        # 输出当前目录下的所有文件
        for file_name in files:
            full_file_path = os.path.join(current_path, file_name)
            print(full_file_path)
  • os.walk返回三个值:当前目录路径、当前目录下的子文件夹列表、当前目录下的文件列表
  • os.path.basename(current_path):获取当前目录的名称(比如从C:/main/canada/May 2022拿到May 2022)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:54:29