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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:22:23