Python "Walk" 目录,最大深度

Python "Walk" directory, max depth

所以我看到了很多关于这个主题的文章,但答案无处不在,我只是在寻找最有效的方法来遍历最大深度为 1 的目录。即如果给定“ /home/user/desktop/test/",我希望能够操作和使用该目录中的所有目录,但不能低于任何目录。

我看到有人说要使用 walklevel() 功能,使用 os.listdir() 的一些技巧,或者使用 os.walk().next() 功能。最 Pythonic/efficient 的方法是什么?

谢谢大家!

嗯,最 Pythonic 和最高效(关于时间)可能不是一回事,而且 "Pythonic" 经常会变成一个见仁见智的问题,但是最直接的 Pythonic 方式这样做在我看来是这样的:

import os

def contained_dirs(dir):
    return filter(os.path.isdir,
                  [os.path.join(dir, f) for f in os.listdir(dir)])

这是一种直接在目标目录中获取所有目录列表的非常简单的方法。这就是您要找的吗?

如果您只需要给定路径中的目录而不需要其他任何东西,您需要列出路径并在访问目录时检查

top_level = '/home/user/desktop/test/'
for path in os.listdir(top_level):
    directory = os.path.join(top_level, path)
    if os.path.isdir(directory)
        do_something_with_dir(directory)