如何在Python中仅列出目录下的文件夹?附现有代码示例
如何在Python中仅列出目录下的文件夹?
没问题,我来帮你优化代码,实现仅列出目标目录下的文件夹。你的原始代码用了os.listdir(),但它会返回目录下所有的文件和文件夹,我们只需要添加过滤条件就行,这里有几种常见的实现方式:
方法1:使用os.listdir() + os.path.isdir()
这是最基础的实现方式,通过拼接完整路径来判断条目是否为文件夹:
import os def get_folders(): target_dir = 'F:/Python/PAMC' # 列表推导式过滤出文件夹 folders = [entry for entry in os.listdir(target_dir) if os.path.isdir(os.path.join(target_dir, entry))] print("目录下的文件夹:") for folder in folders: print(folder) get_folders()
说明:os.path.join(target_dir, entry)用来拼接目标目录和条目名称,生成完整路径——这一步很重要,因为os.path.isdir()需要完整路径才能准确判断(如果你的脚本工作目录不是F:/Python/PAMC的话)。
方法2:使用os.scandir()(更高效)
os.scandir()是Python 3.5+引入的方法,比os.listdir()效率更高,因为它会直接获取文件的属性信息,不需要额外调用os.path方法:
import os def get_folders(): target_dir = 'F:/Python/PAMC' folders = [] # 使用with语句自动关闭扫描器 with os.scandir(target_dir) as entries: for entry in entries: # follow_symlinks=False 可以避免跟随符号链接(可选) if entry.is_dir(follow_symlinks=False): folders.append(entry.name) print("目录下的文件夹:") for folder in folders: print(folder) get_folders()
说明:当目标目录下有大量文件/文件夹时,这个方法的性能优势会很明显。
方法3:使用pathlib(Python 3.4+ 推荐的面向对象方式)
pathlib提供了更直观的面向对象路径操作,代码可读性更强:
from pathlib import Path def get_folders(): target_dir = Path('F:/Python/PAMC') # 直接遍历目录下的Path对象,过滤文件夹 folders = [folder.name for folder in target_dir.iterdir() if folder.is_dir()] print("目录下的文件夹:") for folder in folders: print(folder) get_folders()
说明:这种方式不需要手动拼接路径,Path对象自带is_dir()方法,代码更简洁易懂,也是Python官方推荐的现代路径处理方式。
内容的提问来源于stack exchange,提问作者MOHS3N
相关产品推荐
相关产品推荐

