2015-06-25 4 views
0

Существует каталог, который содержит папки, а также файлы разных форматов.Как получить список имен подкаталогов

import os 
my_list = os.listdir('My_directory') 

вернет полное содержимое имен файлов и папок. Я могу использовать, например, метод endswith('.txt') для выбора только текстовых имен файлов, но как получить список имен только папок?

+1

Если вы используете [ 'os.walk'] (https://docs.python.org/2/library/os.html#os.walk), он дает вам каталоги и файлы по отдельности. – jonrsharpe

ответ

3

Попробуйте проверить для каталогов, при сборке списка.

import os 
output = [dI for dI in os.listdir('foo') if os.path.isdir(os.path.join('foo',dI))] 
1

Просто используйте os.path.isdir на результатах, возвращаемых os.listdir, как:

def listdirs(path): 
    return [d for d in os.listdir(path) if os.path.isdir(d)] 
1

Это должно работать:

my_dirs = [d for d in os.listdir('My_directory') if os.path.isdir(os.path.join('My_directory', d))] 
2

Вы можете использовать os.walk

for i,j,y in os.walk('.'): 
    print(i) 
1

os.walk уже разбивает файлы и папки, в разных списках, и работает рекурсивно:

for root,dirs,_ in os.walk('.'): 
    for d in dirs: 
     print os.path.join(root,d) 
Смежные вопросы