Есть ли способ получить все каталоги, но не файлы в каталоге в Python? - PullRequest
1 голос
/ 08 апреля 2009

Эта ссылка использует пользовательский метод, но я просто хочу посмотреть, есть ли единственный способ сделать это в Python 2.6?

Ответы [ 4 ]

5 голосов
/ 09 апреля 2009

Нет встроенной функции только для вывода списка файлов, но ее достаточно просто определить в несколько строк:

def listfiles(directory):
    return [f for f in os.listdir(directory) 
              if os.path.isdir(os.path.join(directory, f))]

РЕДАКТИРОВАТЬ : исправлено, спасибо Stephan202

3 голосов
/ 09 апреля 2009

Если a_directory - это каталог, который вы хотите проверить, то:

next(f<a href="http://docs.python.org/library/os.html#os.walk" rel="nofollow noreferrer">1</a> for f in os.walk(a_directory))

Из os.walk () ссылка:

Генерация имен файлов в дереве каталогов путем обхода дерева сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в вершине каталога (включая саму вершину) он выдает 3-кортеж (dirpath, dirnames, filenames).

1 голос
/ 09 апреля 2009

Я не верю, что есть. Поскольку каталоги также являются файлами, вы должны запросить все файлы, а затем спросить каждый из них, является ли он каталогом.

0 голосов
/ 09 апреля 2009
def listdirs(path):
    ret = []
    for cur_name in os.listdir(path):
        full_path = os.path.join(path, cur_name)
        if os.path.isdir(full_path):
            ret.append(cur_name)
    return ret

onlydirs = listdir("/tmp/")
print onlydirs

.. или как список-понимание ..

path = "/tmp/"
onlydirs = [x for x in os.listdir(path) if os.path.isdir(os.path.join(path, x))]
print onlydirs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...