glob.md
1> **Источник:** https://python-all.ru/3.9/library/glob.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`glob`](https://python-all.ru/3.9/library/glob.html#module-glob) – расширение шаблонов путей в стиле Unix89**Исходный код:** [Lib/glob.py](https://python-all.ru/src/3.9/Lib/glob.py)1011---1213Модуль [`glob`](https://python-all.ru/3.9/library/glob.html#module-glob) находит все пути, соответствующие указанному шаблону по правилам, используемым в оболочке Unix, хотя результаты возвращаются в произвольном порядке. Подстановка тильды не выполняется, но `*`, `?` и диапазоны символов, заданные с помощью `[]`, будут сопоставлены корректно. Это делается с помощью совместного использования функций [`os.scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) и [`fnmatch.fnmatch()`](https://python-all.ru/3.9/library/fnmatch.html#fnmatch.fnmatch), а не путем фактического запуска подоболочки.1415Обратите внимание, что файлы, начинающиеся с точки (`.`), могут быть сопоставлены только шаблонами, которые также начинаются с точки, в отличие от [`fnmatch.fnmatch()`](https://python-all.ru/3.9/library/fnmatch.html#fnmatch.fnmatch) или [`pathlib.Path.glob()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.glob). (Для подстановки тильды и переменных оболочки используйте [`os.path.expanduser()`](https://python-all.ru/3.9/library/os.path.html#os.path.expanduser) и [`os.path.expandvars()`](https://python-all.ru/3.9/library/os.path.html#os.path.expandvars).)1617Для точного совпадения заключите метасимволы в скобки. Например, `'[?]'` соответствует символу `'?'`.1819> **См. также**20>21> Модуль [`pathlib`](https://python-all.ru/3.9/library/pathlib.html#module-pathlib) предоставляет высокоуровневые объекты путей.2223#### `glob.glob(pathname, *, recursive=False)`2425Возвращает список имён путей (возможно пустой), соответствующих *pathname*, который должен быть строкой, содержащей спецификацию пути. *pathname* может быть абсолютным (например, `/usr/src/Python-1.5/Makefile`) или относительным (например, `../../Tools/*/*.gif`) и может содержать подстановочные символы в стиле оболочки. Сломанные символические ссылки включаются в результаты (как в оболочке). Отсортированы результаты или нет, зависит от файловой системы. Если файл, удовлетворяющий условиям, был удалён или добавлен во время вызова этой функции, не определено, будет ли включено имя пути для этого файла.2627Если *recursive* истинно, шаблон «`**`» будет соответствовать любым файлам и нулю или более каталогам, подкаталогам и символическим ссылкам на каталоги. Если за шаблоном следует [`os.sep`](https://python-all.ru/3.9/library/os.html#os.sep) или [`os.altsep`](https://python-all.ru/3.9/library/os.html#os.altsep), файлы не будут сопоставляться.2829Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `glob.glob` с аргументами `pathname`, `recursive`.3031> **Примечание**32>33> Использование шаблона «`**`» в больших деревьях каталогов может занять чрезмерно много времени.3435Изменено в версии 3.5: Добавлена поддержка рекурсивных шаблонов с помощью «`**`».3637#### `glob.iglob(pathname, *, recursive=False)`3839Возвращает [итератор](https://python-all.ru/3.9/glossary.html#term-iterator), который порождает те же значения, что и [`glob()`](https://python-all.ru/3.9/library/glob.html#module-glob), но не сохраняет их все одновременно.4041Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `glob.glob` с аргументами `pathname`, `recursive`.4243#### `glob.escape(pathname)`4445Экранирует все специальные символы (`'?'`, `'*'` и `'['`). Это полезно, если нужно сопоставить произвольную буквальную строку, которая может содержать специальные символы. Специальные символы в точках монтирования дисков/UNC не экранируются, например, в Windows `escape('//?/c:/Quo vadis?.txt')` возвращает `'//?/c:/Quo vadis[?].txt'`.4647Новое в версии 3.4.4849Например, рассмотрим каталог, содержащий следующие файлы: `1.gif`, `2.txt`, `card.gif` и подкаталог `sub`, который содержит только файл `3.txt`. [`glob()`](https://python-all.ru/3.9/library/glob.html#module-glob) выдаст следующие результаты. Обратите внимание, что все начальные компоненты пути сохраняются.5051```python52>>> import glob53>>> glob.glob('./[0-9].*')54['./1.gif', './2.txt']55>>> glob.glob('*.gif')56['1.gif', 'card.gif']57>>> glob.glob('?.gif')58['1.gif']59>>> glob.glob('**/*.txt', recursive=True)60['2.txt', 'sub/3.txt']61>>> glob.glob('./**/', recursive=True)62['./', './sub/']63```6465Если каталог содержит файлы, начинающиеся с `.`, они не будут сопоставлены по умолчанию. Например, рассмотрим каталог, содержащий `card.gif` и `.card.gif`:6667```python68>>> import glob69>>> glob.glob('*.gif')70['card.gif']71>>> glob.glob('.c*')72['.card.gif']73```7475> **См. также**76>77> **Модуль [`fnmatch`](https://python-all.ru/3.9/library/fnmatch.html#module-fnmatch)**78>79> Расширение имен файлов (не путей) в стиле оболочки80