Python如何仅获取指定目录下的一级文件夹名称而不遍历子文件夹
解决方法
你只需要获取一级目录下的文件夹,不需要使用os.walk遍历完整目录树,以下是两种可行方案:
方案1:使用os.scandir(推荐,性能最优)
直接扫描目标根目录下的所有条目,筛选出文件夹即可,不会访问任何深层目录:
import os root_path = app.config['DATASET_DIRECTORY'] first_level_folders = [] with os.scandir(root_path) as entries: for entry in entries: # 只保留文件夹,过滤文件 if entry.is_dir(): first_level_folders.append(entry.name) # 输出结果 for folder in first_level_folders: print(folder)
方案2:仅读取os.walk的第一层结果
如果需要保留os.walk的写法,只需要取第一次迭代的结果即可,不需要遍历整个迭代器:
import os root_path = app.config['DATASET_DIRECTORY'] # next()直接取os.walk的第一个返回值,对应根目录下的所有内容 root, dirs, files = next(os.walk(root_path)) first_level_folders = dirs # 输出结果 for folder in first_level_folders: print(folder)
原代码问题说明
你之前的写法遍历了os.walk的所有迭代结果,os.walk默认会逐层向下遍历所有子目录,每一层迭代都会返回对应层级的文件夹路径,因此会输出所有层级的文件夹。
内容的提问来源于stack exchange,提问作者Abdalrhman Usama
相关产品推荐
相关产品推荐

