python - 获取当前目录中所有子目录的列表
有没有办法在Python中返回当前目录中所有子目录的列表?
我知道你可以用文件做到这一点,但我需要获取目录列表。
21个解决方案
425 votes
你的意思是直接子目录,还是树下的每个目录?
无论哪种方式,您都可以使用os.path.isdir来执行此操作:
os.walk(directory)
将为每个子目录生成一个元组。 3元组中的第一个条目是目录名称,所以
[x[0] for x in os.walk(directory)]
应该递归地给你所有的子目录。
请注意,元组中的第二个条目是第一个位置中条目的子目录列表,因此您可以使用它,但它不太可能为您节省太多。
但是,您可以使用它只是为了给您直接的子目录:
next(os.walk('.'))[1]
或者查看已发布的其他解决方案,使用os.path.isdir和os.path.isdir,包括“如何获取Python中所有直接子目录”中的那些解决方案。
Blair Conrad answered 2019-01-27T14:48:07Z
126 votes
import os
d = '.'
[os.path.join(d, o) for o in os.listdir(d)
if os.path.isdir(os.path.join(d,o))]
gahooa answered 2019-01-27T14:48:23Z
87 votes
你可以使用/
from glob import glob
glob("/path/to/directory/*/")
不要忘记*之后的/。
Udit Bansal answered 2019-01-27T14:48:55Z
36 votes
如果您需要一个可以找到子目录中所有子目录的递归解决方案,请使用之前建议的walk。
如果您只需要当前目录的子目录,请将os.listdir与os.path.isdir结合使用
Eli Bendersky answered 2019-01-27T14:49:27Z
34 votes
比上面更好,因为你不需要几个os.path.join(),你将直接获得完整的路径(如果你愿意),你可以在Python 3.5+中执行此操作
subfolders = [f.path for f in os.scandir(folder) if f.is_dir() ]
这将给出子目录的完整路径。如果您只想要子目录的名称,请使用f.name而不是f.path
[https://docs.python.org/3/library/os.ht