glob.md
1> **Источник:** https://python-all.ru/3.4/library/glob.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 11.7. [`glob`](https://python-all.ru/3.4/library/glob.html#module-glob) – расширение шаблонов путей в стиле Unix89**Исходный код:** [Lib/glob.py](https://python-all.ru/src/3.4/Lib/glob.py)1011---1213Модуль [`glob`](https://python-all.ru/3.4/library/glob.html#module-glob) находит все пути, соответствующие заданному шаблону, согласно правилам оболочки Unix, хотя результаты возвращаются в произвольном порядке. Подстановка тильды не выполняется, но `*`, `?` и диапазоны символов, заданные с помощью `[]`, будут правильно обработаны. Это делается с помощью совместного использования функций [`os.listdir()`](https://python-all.ru/3.4/library/os.html#os.listdir) и [`fnmatch.fnmatch()`](https://python-all.ru/3.4/library/fnmatch.html#fnmatch.fnmatch), а не вызовом подпроцесса. Обратите внимание: в отличие от [`fnmatch.fnmatch()`](https://python-all.ru/3.4/library/fnmatch.html#fnmatch.fnmatch), [`glob`](https://python-all.ru/3.4/library/glob.html#module-glob) обрабатывает имена файлов, начинающиеся с точки (`.`), как особые случаи. (Для подстановки тильды и переменных оболочки используйте [`os.path.expanduser()`](https://python-all.ru/3.4/library/os.path.html#os.path.expanduser) и [`os.path.expandvars()`](https://python-all.ru/3.4/library/os.path.html#os.path.expandvars).)1415Для точного совпадения заключите метасимволы в скобки. Например, `'[?]'` соответствует символу `'?'`.1617> **См. также**18>19> Модуль [`pathlib`](https://python-all.ru/3.4/library/pathlib.html#module-pathlib) предоставляет высокоуровневые объекты путей.2021#### `glob.glob(pathname)`2223Возвращает (возможно пустой) список путей, соответствующих *pathname*, который должен быть строкой, содержащей спецификацию пути. *pathname* может быть абсолютным (например, `/usr/src/Python-1.5/Makefile`) или относительным (например, `../../Tools/*/*.gif`) и может содержать шаблоны в стиле оболочки. Битые симлинки включаются в результаты (как в оболочке).2425#### `glob.iglob(pathname)`2627Возвращает [*итератор*](https://python-all.ru/3.4/glossary.html#term-iterator), который выдаёт те же значения, что и [`glob()`](https://python-all.ru/3.4/library/glob.html#module-glob), без хранения их всех одновременно.2829#### `glob.escape(pathname)`3031Экранирует все специальные символы (`'?'`, `'*'` и `'['`). Это полезно, если нужно сопоставить произвольную литеральную строку, которая может содержать специальные символы. Специальные символы в дисках/UNC-точках монтирования не экранируются, например, в Windows `escape('//?/c:/Quo vadis?.txt')` возвращает `'//?/c:/Quo vadis[?].txt'`.3233Новое в версии 3.4.3435Например, рассмотрим каталог, содержащий только следующие файлы: `1.gif`, `2.txt` и `card.gif`. [`glob()`](https://python-all.ru/3.4/library/glob.html#module-glob) выдаст следующие результаты. Обратите внимание, что начальные компоненты пути сохраняются.3637```python38>>> import glob39>>> glob.glob('./[0-9].*')40['./1.gif', './2.txt']41>>> glob.glob('*.gif')42['1.gif', 'card.gif']43>>> glob.glob('?.gif')44['1.gif']45```4647Если каталог содержит файлы, начинающиеся с `.`, они не будут сопоставлены по умолчанию. Например, рассмотрим каталог, содержащий `card.gif` и `.card.gif`:4849```python50>>> import glob51>>> glob.glob('*.gif')52['card.gif']53>>> glob.glob('.c*')54['.card.gif']55```5657> **См. также**58>59> **Модуль [`fnmatch`](https://python-all.ru/3.4/library/fnmatch.html#module-fnmatch)**60>61> Расширение имен файлов (не путей) в стиле оболочки62