【发布时间】:2019-01-28 09:48:41
【问题描述】:
我有一些简单的代码可以打印出目录的结构。
我的示例目录ABC 包含子目录A,其中包含A.txt,一个子目录Z 包含Z.txt,以及一个文件info.txt。在实际使用中,这将是许多文件和嵌套目录的大集合。
import os
topdir = 'ABC/'
for dirpath, dirnames, files in os.walk(topdir):
print(os.path.join(dirpath))
for name in files:
print(os.path.join(dirpath, name))
输出是:
ABC/
ABC/info.txt
ABC/A
ABC/A/A.txt
ABC/Z
ABC/Z/Z.txt
如何才能使目录在顶部处理/打印? 我希望输出复制我在 Windows 资源管理器中看到的内容,它首先显示目录,然后显示文件。
我想要的输出:
ABC/
ABC/A
ABC/A/A.txt
ABC/Z
ABC/Z/Z.txt
ABC/info.txt
【问题讨论】:
-
在列表中追加结果并按长度排序
-
或使用路径分隔符的数量进行排序。
(/) -
这两种方法可能在
folder names are larger than filenames或直接目录中有文件时都不准确(其中只有1 个/,而子目录将有1 个以上。 -
@Ben,您可以将
for循环用于在循环之外打印文件名以打印目录名称(删除缩进),并且应该这样做..它将首先循环遍历目录,然后目录中的文件。 -
@ParvBanks 这只会打印最后一个目录中的文件。
标签: python python-3.x