【问题标题】:How to get the list of dirs from a path that is provided as input, in Python using os.walk如何在 Python 中使用 os.walk 从作为输入提供的路径中获取目录列表
【发布时间】:2015-02-06 21:49:54
【问题描述】:

我有一个目录“a”,其中有 5 个子目录 a1 到 a5。我想要的只是如果我将“路径”作为脚本的输入,我想要该路径中的目录列表。例如,如果我说“path=/home/abc/a”,那么输出应该是 a1 到 a5。

使用 os.walk 的 o/p 与我想要的略有不同..我如何得到它?

>>> import os
    >>> for dirs in os.walk("."):
    ...     print "Name", dirs
    ... 
    Name ('.', ['a1', 'a2', 'a3', 'a4', 'a5'], [])
    Name ('./a1', [], [])
    Name ('./a2', [], [])
    Name ('./a3', [], [])
    Name ('./a4', [], [])
    Name ('./a5', [], [])

【问题讨论】:

    标签: python list directory path relative-path


    【解决方案1】:

    我不确定您要的是什么...该目录中的所有子目录?试试这个

    os.walk("path").next()[1]
    

    编辑:应该解释一下。正如 Chris 所提到的, os.walk() 将返回一个生成器对象,而 next() 方法从该对象中检索下一项。由于这是一个由 (root, dirs, files) 组成的 3 元组,并且您只需要子目录,因此您只需要对相关部分进行索引。

    【讨论】:

    • 提到 os.walk 返回一个生成器来稍微解释一下代码
    【解决方案2】:
    for root, sub, files in os.walk(path):
        print sub
        break
    

    os.walk() 返回 3 个不同的值,并将递归地遍历目录。第一次迭代后中断将停止递归。

    【讨论】:

    • >>> for root, sub, os.walk('delete_later') 中的文件: ... print "sub is", sub ... sub is ['a1', 'a2' , 'a3', 'a4', 'a5'] sub is [] sub is [] sub is [] sub is [] sub is [] >>> 为什么它给我一个空列表。我想要的只是第一行.. ?
    • 它是递归的,所以你可以在第一次迭代后打破它,修改一下
    猜你喜欢
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2012-10-22
    相关资源
    最近更新 更多