有没有办法在Python中返回当前目录中所有子目录的列表?

我知道您可以对文件执行此操作,但我需要获得目录列表。


当前回答

在ipython中复制粘贴友好:

import os
d='.'
folders = list(filter(lambda x: os.path.isdir(os.path.join(d, x)), os.listdir(d)))

从打印(文件夹)输出:

['folderA', 'folderB']

其他回答

我们可以使用os.walk()来获取所有文件夹的列表

import os

path = os.getcwd()

pathObject = os.walk(path)

这个pathObject是一个对象,我们可以通过

arr = [x for x in pathObject]

arr is of type [('current directory', [array of folder in current directory], [files in current directory]),('subdirectory', [array of folder in subdirectory], [files in subdirectory]) ....]

我们可以通过遍历arr并打印中间的数组来获得所有子目录的列表

for i in arr:
   for j in i[1]:
      print(j)

这将打印所有子目录。

获取所有文件:

for i in arr:
   for j in i[2]:
      print(i[0] + "/" + j)

我更喜欢使用滤镜(https://docs.python.org/2/library/functions.html#filter),但这只是个人喜好问题。

d='.'
filter(lambda x: os.path.isdir(os.path.join(d, x)), os.listdir(d))

对于像我这样只需要一个目录中直接文件夹名称的人来说,这在Windows上是可行的。

import os

for f in os.scandir(mypath):
    print(f.name)

在Python 2.7中,可以使用os.listdir(path)获取子目录(和文件)列表

import os
os.listdir(path)  # list of subdirectories and files

你可以用glob。glob

from glob import glob
glob("/path/to/directory/*/", recursive = True)

不要忘记*后面的/。