检查给定目录是否包含python中的任何目录

Nic*_*ick 1 python directory

本质上,我想知道这个问题的最佳答案是否可以在 Python 中实现。我正在查看模块 os、os.path 和 shutil,但我还没有找到一个简单的等价物,尽管我认为我只是缺少一些简单的东西。

更具体地说,假设我有一个目录 A,目录 A 内是任何其他目录。我可以调用os.walk('path/to/A')并检查是否dirnames为空,但我不想让程序遍历以 A 为根的整个树;即我正在寻找的应该停止并在找到子目录后立即返回 true。

为清楚起见,在包含文件但没有目录的目录上,可接受的解决方案将返回 False。

Jor*_*ley 7

也许你想要

def folders_in(path_to_parent):
    for fname in os.path.listdir(path_to_parent):
        if os.path.isdir(os.path.join(path_to_parent,fname)):
            yield os.path.join(path_to_parent,fname)

print(list(folders_in("/path/to/parent")))
Run Code Online (Sandbox Code Playgroud)

这将返回所有子目录的列表......如果它是空的,那么没有子目录

或在一行

set([os.path.dirname(p) for p in glob.glob("/path/to/parent/*/*")])
Run Code Online (Sandbox Code Playgroud)

尽管对于要使用此方法计算的子目录,它必须包含一些文件

或操纵步行

def subfolders(path_to_parent):
     try:
        return next(os.walk(path_to_parent))[1]
     except StopIteration:
        return []

 
Run Code Online (Sandbox Code Playgroud)