打印目录列表中的最终(叶?)节点 Python

Printing final (leaf?) nodes in directory listing Python

我可以遍历目录并只打印 folder/directory 个名称,但我想排除包含其他目录的目录的文件夹名称。出于某种原因,我在树结构中调用 "final node" 但我很可能是在自欺欺人,这不是第一次了。 =) 在审查其他答案列表时,也许这被称为 "leaf node" ?

    import os
    chosen_path = (os.getcwd())
    FoldersFound =[] 
    for root, dirs, files in os.walk(chosen_path, topdown=True):
        for name in dirs:
            FoldersFound.append(name)
    FoldersFound.sort()
    for FolderName in FoldersFound:
        print FolderName

这将打印没有子目录的目录的全名:

for root, dirs, files in os.walk(here):
    if not dirs:
        print '%s is a leaf' % root

要仅打印基本名称,请将 root 替换为 os.path.basename(root)

要将它们放入列表中,请使用:

folders = []
for root, dirs, files in os.walk(here):
    if not dirs:
        folders.append(root)

同样只将基本名称放入列表中,将 root 替换为 os.path.basename(root)

这是一个使用 "os.listdir" 的解决方案:

import os


def print_leaf_dir(pathname, dirname):
dirnames = [subfolder for subfolder in os.listdir(os.path.join(pathname, dirname)) if os.path.isdir(os.path.join(pathname, dirname, subfolder))]

if(dirnames):
    for subfolder in dirnames:
        print_leaf_dir(os.path.join(pathname, dirname), subfolder)
else:
    print(os.path.join(pathname, dirname))


if(__name__ == '__main__'):
    print_leaf_dir(r'C:\TEMP', '')