Python поиск файлов по шаблону
Есть код
for root, dirs, files in os.walk("//")
for file in files:
if file in fnmatch.filter(files,"*"+word+"*"):print(os.path.join(root,file))
Код нормально находит файл по указанному шаблону. Вопрос сделать такой поиск по нескольким словам? Пример что бы 'кот','собака'
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
что мешает в лоб забубенить?
for root, dirs, files in os.walk("//")
for file in files:
for word in words:
if file in fnmatch.filter(files, f"*{word}*"):print(os.path.join(root,file))
ну или найти все файлы, а потом уже регулярными выражениями выбрать то, что вам нужно
Автор решения: MaxU
→ Ссылка
Я бы написал функцию для поиска по регулярным выражениям:
import re
from pathlib import Path
def glob_re(path, regex="", glob_mask="**/*", inverse=False):
p = Path(path)
if inverse:
res = [str(f) for f in p.glob(glob_mask) if not re.search(regex, str(f))]
else:
res = [str(f) for f in p.glob(glob_mask) if re.search(regex, str(f))]
return res
пример:
res = glob_re(r"/starting_path/to", regex="(?:кот|собака)")
PS по умолчанию используется маска glob_mask="**/*", благодаря которой поиск будет осуществляться рекурсивно во всех поддиректориях. Если искать нужно только в текущей директории, тогда надо явно указать glob_mask="*"