Уведомления

Группа в Telegram: @pythonsu

#1 Май 30, 2016 23:45:55

octoberin
Зарегистрирован: 2016-05-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

os.walk: поиск папок по файлам

Всем привет!
Прошу помочь со следующей задачкой.
Нужно вывести названия всех папок, где содержатся файлы определённого расширения (вероятно, через endswith или регулярным выражением).
Я пыталась сделать это через цикл типа for roots, dirs and files
Но даже применяя выражение, не получилось отфильтровать папки именно по критерию находящихся в них файлах. В лучшем случае выдаются все подкаталоги от заданной.
Надеюсь, вы поможете мне)

Офлайн

#2 Май 31, 2016 00:02:30

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

os.walk: поиск папок по файлам

octoberin
(вероятно, через endswith или регулярным выражением).
нет. Для этого сущестрвуют os.path.split os.path.splitext. Удобная штука glob



Офлайн

#3 Май 31, 2016 00:07:12

octoberin
Зарегистрирован: 2016-05-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

os.walk: поиск папок по файлам

Спасибо. А это поможет отфильтровать папки?

Офлайн

#4 Май 31, 2016 03:02:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

os.walk: поиск папок по файлам

>>> import re
>>> import os
>>> 
>>> def search_dirs_by_exts(path, exts):
...     pat = r'\.({})$'.format('|'.join(exts))
...     patc = re.compile(pat)
...     out = [root for root, _, files in os.walk(path)
...            if any(map(patc.search, files))]
...     return out
... 
>>> search_dirs_by_exts('/etc', ['txt', 'repo'])
['/etc/pki/nssdb', '/etc/yum.repos.d']
>>>



Отредактировано py.user.next (Май 31, 2016 03:03:58)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version