как получить всю папку только по заданному пути в python?

#python

#python

Вопрос:

я использую этот код для получения всех файлов в заданной папке. Есть ли способ получить только папки?

 a = os.listdir('Tools')
  

Ответ №1:

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

Комментарии:

1. Или next(os.walk('Tools'))[1] .

2. -Ned почему, когда я пытаюсь использовать dirs = [d для d в os.listdir(‘Tools’), если os.path.isdir(d)] в python IDLE, я получаю только [‘Script’] ? В моем каталоге есть это [‘asunyan.gif ‘, ‘i18n’, ‘pynche’, ‘Scripts’, ‘versioncheck’, ‘webchecker’] спасибо 🙂

Ответ №2:

Для печати только папок

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

Для печати только файлов

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

Комментарии:

1. Я получаю AttributeError: объект ‘generator’ не имеет атрибута ‘next’

2. Работает идеально для меня. (Python 2.7, Ubuntu 16, Anaconda env)

3. Python 3 (для папок): print(next(os.walk(DIR_PATH))[1])

Ответ №3:

Другой метод:

 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

Ответ №5:

 import os

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

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

Ответ №6:

Простой пример в 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)))