有没有办法在Python中返回当前目录中所有子目录的列表?

我知道您可以对文件执行此操作,但我需要获得目录列表。


当前回答

最简单的方法:

from pathlib import Path
from glob import glob

current_dir = Path.cwd()
all_sub_dir_paths = glob(str(current_dir) + '/*/') # returns list of sub directory paths

all_sub_dir_names = [Path(sub_dir).name for sub_dir in all_sub_dir_paths] 

其他回答

使用过滤函数os.path.isdir over os.listdir() 类似这样的过滤器(os.path.isdir,[os.path.join(os.path.abspath('PATH'),p) for p in os.listdir('PATH/')])

您是指直接子目录,还是树下的每个目录?

无论哪种方式,你都可以使用os。走路做这个:

os.walk(directory)

将为每个子目录生成一个元组。三元组中的第一个条目是一个目录名,因此

[x[0] for x in os.walk(directory)]

应该会递归地给出所有子目录。

注意,元组中的第二个条目是第一个位置的条目的子目录列表,所以您可以使用这个代替,但它不太可能节省太多时间。

但是,你可以使用它来给你直接的子目录:

next(os.walk('.'))[1]

或者查看已经发布的其他解决方案,使用os。Listdir和os.path。isdir,包括“如何在Python中获取所有直接子目录”中的那些。

如果您需要一个递归的解决方案来查找子目录中的所有子目录,请使用前面建议的walk。

如果您只需要当前目录的子目录,请将os. xml目录合并在一起。使用os.path.isdir

以Eli Bendersky的解决方案为基础,使用以下示例:

import os
test_directory = <your_directory>
for child in os.listdir(test_directory):
    test_path = os.path.join(test_directory, child)
    if os.path.isdir(test_path):
        print test_path
        # Do stuff to the directory "test_path"

>是要遍历的目录的路径。

下面是基于@Blair Conrad的例子的几个简单函数

import os

def get_subdirs(dir):
    "Get a list of immediate subdirectories"
    return next(os.walk(dir))[1]

def get_subfiles(dir):
    "Get a list of immediate subfiles"
    return next(os.walk(dir))[2]