Форум сайта python.su
Всем привет!
Прошу помочь со следующей задачкой.
Нужно вывести названия всех папок, где содержатся файлы определённого расширения (вероятно, через endswith или регулярным выражением).
Я пыталась сделать это через цикл типа for roots, dirs and files
Но даже применяя выражение, не получилось отфильтровать папки именно по критерию находящихся в них файлах. В лучшем случае выдаются все подкаталоги от заданной.
Надеюсь, вы поможете мне)
Офлайн
octoberinнет. Для этого сущестрвуют os.path.split os.path.splitext. Удобная штука glob
(вероятно, через endswith или регулярным выражением).
Офлайн
Спасибо. А это поможет отфильтровать папки?
Офлайн
>>> 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)
Офлайн