如何在Python中获取给定路径下所有文件夹?

41

我正在使用这段代码获取给定文件夹中的所有文件。是否有一种方法只获取文件夹?

a = os.listdir('Tools')
6个回答

56
import os.path
dirs = [d for d in os.listdir('Tools') if os.path.isdir(os.path.join('Tools', d))]

10
或者 next(os.walk('Tools'))[1] - Eryk Sun
Ned,为什么我在Python IDLE中尝试运行dirs = [d for d in os.listdir('Tools') if os.path.isdir(d)]时,只会得到['Script']?我的目录包含这些内容['asunyan.gif','i18n','pynche','Scripts','versioncheck','webchecker'],谢谢 :) - unice

22

仅打印文件夹

print os.walk(DIR_PATH).next()[1]

仅打印文件

print os.walk(DIR_PATH).next()[2]

2
我收到 AttributeError: 'generator' 对象没有属性 'next' 的错误。 - sparrow
对我来说完美无缺。(Python 2.7,Ubuntu 16,Anaconda 环境) - rkmalaiya
9
Python 3(用于文件夹):打印出下一个(os.walk(DIR_PATH))返回的文件夹名称列表。 - Gerges

7

另一种方法:

dirs = [entry.path for entry in os.scandir('Tools') if entry.is_dir()]

4
使用os.walk(DIR_PATH).next()[1]。请注意,os.walk(DIR_PATH).next()会生成包含3个元素的元组,其中:
  1. os.walk(DIR_PATH).next()[0]DIR_PATH
  2. os.walk(DIR_PATH).next()[1]DIR_PATH中所有文件夹的列表
  3. os.walk(DIR_PATH).next()[2]DIR_PATH中所有文件的列表

0
import os

def ld(val):
    return next(os.walk(val))[1] # Thank you @eryksun

for fold in ld('/'):
    print(fold)

0

Python 3 的简单示例,用于获取文件和文件夹的分离。

from os.path import isdir, isfile
from os import listdir

path = "./"

# get only folders
folders = list(filter(lambda x: isdir(f"{path}\\{x}"), listdir(path)))

# get only files
files = list(filter(lambda x: isfile(f"{path}\\{x}"), listdir(path)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接