如何按顺序获取路径名,子目录名和文件列表?

时间:2018-07-03 15:14:58

标签: python python-2.7 file path

我已经尝试了一段时间,尽管我觉得这不是Python list directory, subdirectory, and files的副本,但恐怕会被标记为副本。此解决方案将其打印为path/subdirectory/files的格式。但这不是我所需要的。

考虑目录的以下结构:

Root

 - Directory1
    - Files
 - Directory2
    - Files
 - Directory3
    - Subdirectory
        - Sub-subdirectory1
            - Files
        - Sub-subdirectory2
            - Files
        - Sub-subdirectory3
            - Files
 - Directory4
    - Files

对于我的程序,我需要路径名称,这并不难。但是,我还需要使用for name in subdirs可以做到的子目录的名称,但是,我无法获得子目录中文件的名称。这是我尝试过的:

for path, subdirs, files in os.walk(root):
    for dirname in subdirs:
        print dirname
        for filename in os.listdir(path + ‘\\’ + dirname):
            print filename

这一直有效,直到我点击一个子目录,然后在该子目录中将文件名视为子目录名。这在我的程序中成为问题,因为它导致崩溃,而且我正在从文件中取出信息并将它们转换为XML文件。而且我需要目录名称以便正确命名文件,并为其指定适当的标题。

我想要以下输出:

 - Directory1
    - Files
 - Directory2
    - Files
 - Sub-subdirectory1
    - Files
 - Sub-subdirectory2
    - Files
 - Sub-subdirectory3
    - Files
 - Directory3
    - Files

如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

如果只想打印包含文件的目录:

for path, subdirs, files in os.walk(root):
    if files:
        print os.path.basename(path)
        for filename in files:
            print '  ' + filename  # spaces are just for indent

如果您还需要空目录,请删除if files