Python 3.4+pathlibфункция
.glob()
поиск
Ищет файлы по шаблону внутри каталога и возвращает ленивый итератор путей. Шаблон `**/` включает рекурсивный обход.
Синтаксис
p.glob('*.py')
Возвращает ленивый итератор (в 3.14 — объект map), а не список: len() к нему не применить и второй раз проитерировать не выйдет — если результат нужен дважды, оборачивайте в list(). Порядок выдачи задаёт файловая система, он не отсортирован, так что для стабильного вывода берите sorted(). Шаблон сопоставляется с именем на каждом уровне отдельно, а '**' по большому дереву может обходиться очень дорого по времени.
Примеры
from pathlib import Path
root = Path('glob_demo')
(root / 'pkg').mkdir(parents=True, exist_ok=True)
for name in ('a.txt', 'b.txt', 'main.py', 'pkg/util.py'):
(root / name).touch()
print(sorted(p.name for p in root.glob('*.txt'))) # → ['a.txt', 'b.txt']
print([p.name for p in root.glob('*/*.py')]) # → ['util.py'] — на уровень глубже
print(sorted(p.name for p in root.glob('**/*.py'))) # → ['main.py', 'util.py'] — рекурсивно
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности