如何返回驱动器中的所有文件夹?
os.listdir(dir)
将是一个候选者,但它只返回直接的子目录,我想要所有的子目录。
我看到另一个堆栈溢出问题说要使用[x[0] for x in os.walk(directory)]
https://stackoverflow.com/a/973488/18323484但我不知道如何使用它。
os.walk
为遍历的每个目录生成三个-tuple
,形式为(currentdir, containeddirs, containedfiles)
。此列表组件:
[x[0] for x in os.walk(directory)]
只是忽略每个目录的内容,只累积它枚举的目录。如果使用解包(对于你不关心的东西使用_
(编写,它会稍微好一点/更自我记录,例如:
dirs = [curdir for curdir, _, _ in os.walk(directory)]
但它们都是等价的。要使其成为整个驱动器的列表,只需提供驱动器的根作为os.walk
的directory
参数,例如,对于Windows:
c_drive_dirs = [curdir for curdir, _, _ in os.walk('C:\')]
或对于非Windows:
alldirs = [curdir for curdir, _, _ in os.walk('/')]