Python自定义Folder类获取指定目录二级子文件夹问题求助
解决方案
原有代码仅扫描了传入根路径下的第一级目录,因此仅返回Actor1、Actor2级别的路径,没有进一步扫描一级子目录下的内容。以下是两种适配需求的修改方案:
方案1:固定获取二级子文件夹(适配你当前的目录结构)
如果你的目录结构固定为两级子目录,直接用双层通配符匹配即可,代码修改如下:
import os import glob class Folder: """Attempt to model typical folder.""" def __init__(self, path): self.path = path def get_folder(self): # 用*/*匹配两级目录 all_sub_paths = glob.glob(os.path.join(self.path, "*", "*")) # 过滤排除文件,仅保留文件夹路径 return [p for p in all_sub_paths if os.path.isdir(p)]
调用方式和之前一致:Folder("你的datasets目录路径").get_folder(),即可直接返回你需要的四个二级子文件夹路径。
方案2:适配任意层级的子文件夹获取
如果后续可能需要获取更深层级的目录,可使用递归扫描的方案,支持指定扫描深度:
import os from pathlib import Path class Folder: """Attempt to model typical folder.""" def __init__(self, path): self.path = Path(path) def get_folder(self, depth=None): sub_dirs = [] # 指定深度为2时返回二级子目录 if depth == 2: path_iter = self.path.glob("*/*") # 不指定深度时递归返回所有层级子目录 else: path_iter = self.path.rglob("*") for p in path_iter: if p.is_dir(): # 可根据需要修改为相对路径/正斜杠格式等 sub_dirs.append(str(p.resolve())) return sub_dirs
调用时传入depth=2即可获得目标结果:Folder("你的datasets目录路径").get_folder(depth=2)。
内容的提问来源于stack exchange,提问作者Girolamo
相关产品推荐
相关产品推荐

