我已经尝试了一段时间,尽管我觉得这不是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
如何实现这一目标?
答案 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
。