Python Glossary English

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Сообщить о неточности