如何在Python中仅列出最下层目录?

时间:2013-07-30 19:30:58

标签: python

import os

for dirpaths, dirnames, filenames in os.walk(mydir):
    print dirpaths

mydir中为我提供所有(子)目录。如何只获取树底部的目录?

4 个答案:

答案 0 :(得分:9)

这将只打印出那些没有子目录的目录

for dirpath, dirnames, filenames in os.walk(mydir):
    if not dirnames:
        print dirpath, "has 0 subdirectories and", len(filenames), "files"

答案 1 :(得分:3)

喜欢这个吗?

for dirpaths, dirnames, filenames in os.walk(mydir):
    if not dirnames: print dirpaths

答案 2 :(得分:2)

我看到了两个用于显示叶子目录的解决方案(即那些不包含子目录的解决方案)。另一方面,最底层的目录不仅是叶目录,而且还处于最大深度。这是一个粗略的方法来找出最底层的目录:

import os

mydir = '/Users/haiv/src/python'
max_depth = 0
bottom_most_dirs = []
for dirpath, dirnames, filenames in os.walk(mydir):
    depth = len(dirpath.split(os.sep))
    if max_depth < depth:
        max_depth = depth
        bottom_most_dirs = [dirpath]
    elif max_depth == depth:
        bottom_most_dirs.append(dirpath)
print bottom_most_dirs

答案 3 :(得分:-1)

import os

mydir='/home/'
print [dirpaths for dirpaths, dirnames, filenames in os.walk(mydir) if not dirnames]