Найти - Пользователи
Полная версия: os.walk: поиск папок по файлам
Начало » Центр помощи » os.walk: поиск папок по файлам
1
octoberin
Всем привет!
Прошу помочь со следующей задачкой.
Нужно вывести названия всех папок, где содержатся файлы определённого расширения (вероятно, через endswith или регулярным выражением).
Я пыталась сделать это через цикл типа for roots, dirs and files
Но даже применяя выражение, не получилось отфильтровать папки именно по критерию находящихся в них файлах. В лучшем случае выдаются все подкаталоги от заданной.
Надеюсь, вы поможете мне)
doza_and
octoberin
(вероятно, через endswith или регулярным выражением).
нет. Для этого сущестрвуют os.path.split os.path.splitext. Удобная штука glob
octoberin
Спасибо. А это поможет отфильтровать папки?
py.user.next
>>> 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']
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB