在目录列表Python中打印final(leaf?)节点

时间:2015-01-26 08:49:30

标签: python os.walk

我可以遍历目录并打印文件夹/目录名,但我想排除包含其他目录的目录的文件夹名称。出于某种原因,我称之为"最终节点"在树形结构中但我很可能在欺骗自己,不会是第一次。 =)在回顾其他答案的列表时,这可能被称为"叶子节点" ?

    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

2 个答案:

答案 0 :(得分:6)

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

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)

答案 1 :(得分:0)

这是一个使用" 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', '')