获取文件夹python中的所有嵌套目录

时间:2014-04-15 17:59:42

标签: python os.walk

这是目录结构

10
  files
    2009
    2010
11
  files
    2007
    2010
    2006

我正在尝试获取文件中所有目录的完整路径名

import os
x = os.walk('.').next()[1]

print x # prints ['33', '18', '27', '39', '2', '62', '25']

for a in x:
    y = os.walk(a).next()[1]

print y # prints ['files']

我尝试了嵌套,但是遇到了停止错误。

我打算做的是获得如下所示的内容,

['10/files/2009','10/files/2010','11/files/2007','11/files/2010','10/files/2006']

如何在python中完成?

1 个答案:

答案 0 :(得分:1)

看起来您只想要嵌套最深的目录。 如果使用topdown=False参数,您将获得深度优先遍历,这将在其父目录之前列出最深层嵌套的目录。

要过滤掉更高级别的目录, 您可以使用一个集来跟踪父目录,以便省略报告:

import os

def listdirs(path):
    seen = set()
    for root, dirs, files in os.walk(path, topdown=False):
        if dirs:
            parent = root
            while parent:
                seen.add(parent)
                parent = os.path.dirname(parent)
        for d in dirs:
            d = os.path.join(root, d)
            if d not in seen:
                yield d

for d in listdirs('.'):
    print(d)