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)
所以我看到了很多关于这个主题的文章,但答案无处不在,我只是在寻找最有效的方法来遍历最大深度为 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)