Python 获取树中最低子目录的列表
我有一个特定目录的路径,我需要得到一个它的所有子目录的列表,这些子目录本身不包含任何子目录 例如,如果我有以下树:Python 获取树中最低子目录的列表,python,os.walk,Python,Os.walk,我有一个特定目录的路径,我需要得到一个它的所有子目录的列表,这些子目录本身不包含任何子目录 例如,如果我有以下树: -father_dir: -son_dir1: -grandson.txt -son_dir2: -grandson_dir1: -greatgrandson1.txt 我想要一个包含以下内容的列表:[儿子,孙子] 我尝试的内容:我使用os.walk()获取father\u dir中的所有子目录,现在我尝试迭
-father_dir:
-son_dir1:
-grandson.txt
-son_dir2:
-grandson_dir1:
-greatgrandson1.txt
我想要一个包含以下内容的列表:[儿子,孙子]
我尝试的内容:我使用os.walk()
获取father\u dir
中的所有子目录,现在我尝试迭代每个子目录的内容(使用os.listdir()
)并查找它是否包含目录。。。到目前为止,我还没有成功(因为os.listdir()
没有给出目录的路径,只给出了它的名称),而且这似乎是一个非常麻烦的方法
欢迎任何简单的解决办法。谢谢
lowest_dirs = list()
for root,dirs,files in os.walk(starting_directory):
if not dirs:
lowest_dirs.append(root)
这是因为os.walk
在目录中循环,依次将每个目录设置为root
。你想知道它是不是一个最低级别的目录?这意味着它不包含其他目录,因此对于该根目录,如果dirs
为空,则将其放入累加器中
如果您还想跳过最低级别的空文件夹,请执行以下操作:
if files and not dirs:
如果只需要尾部(文件夹名称,而不是整个路径),请使用:
测试它:
使用
os.walk
和列表理解:
[os.path.split(r)[-1] for r, d, f in os.walk(tree) if not d]
很漂亮(包括实现和解释)!非常感谢!:-)
>>> lowest_dirs = list()
>>> toplevel = r"U:\User\adsmith\My Documents\dump\father_dir"
>>> for root,dirs,files in os.walk(toplevel):
... if not dirs:
... lowest_dirs.append(os.path.split(root)[-1])
>>> print(lowest_dirs)
['son_dir1', 'grandson_dir1']
[os.path.split(r)[-1] for r, d, f in os.walk(tree) if not d]