打印目录列表中的最终(叶?)节点 Python
Printing final (leaf?) nodes in directory listing Python
我可以遍历目录并只打印 folder/directory 个名称,但我想排除包含其他目录的目录的文件夹名称。出于某种原因,我在树结构中调用 "final node" 但我很可能是在自欺欺人,这不是第一次了。 =) 在审查其他答案列表时,也许这被称为 "leaf node" ?
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
这将打印没有子目录的目录的全名:
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)
这是一个使用 "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', '')
我可以遍历目录并只打印 folder/directory 个名称,但我想排除包含其他目录的目录的文件夹名称。出于某种原因,我在树结构中调用 "final node" 但我很可能是在自欺欺人,这不是第一次了。 =) 在审查其他答案列表时,也许这被称为 "leaf node" ?
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
这将打印没有子目录的目录的全名:
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)
这是一个使用 "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', '')