我可以遍历目录并打印文件夹/目录名,但我想排除包含其他目录的目录的文件夹名称。出于某种原因,我称之为"最终节点"在树形结构中但我很可能在欺骗自己,不会是第一次。 =)在回顾其他答案的列表时,这可能被称为"叶子节点" ?
import os
chosen_path = (os.getcwd())
FoldersFound =[]
for root, dirs, files in os.walk(chosen_path, topdown=True):
for name in dirs:
FoldersFound.append(name)
FoldersFound.sort()
for FolderName in FoldersFound:
print FolderName
答案 0 :(得分:6)
这将打印没有子目录的目录的全名:
for root, dirs, files in os.walk(here):
if not dirs:
print '%s is a leaf' % root
要仅打印基本名称,请将root
替换为os.path.basename(root)
要将它们放入列表中,请使用:
folders = []
for root, dirs, files in os.walk(here):
if not dirs:
folders.append(root)
同样,只将基本名称放在列表中,将root
替换为os.path.basename(root)
答案 1 :(得分:0)
这是一个使用" os.listdir":
的解决方案import os
def print_leaf_dir(pathname, dirname):
dirnames = [subfolder for subfolder in os.listdir(os.path.join(pathname, dirname)) if os.path.isdir(os.path.join(pathname, dirname, subfolder))]
if(dirnames):
for subfolder in dirnames:
print_leaf_dir(os.path.join(pathname, dirname), subfolder)
else:
print(os.path.join(pathname, dirname))
if(__name__ == '__main__'):
print_leaf_dir(r'C:\TEMP', '')