Документация Python неофициальный перевод

glob.md

74 строк · 6.3 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.7/library/glob.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`glob`](https://python-all.ru/3.7/library/glob.html#module-glob) – расширение шаблонов путей в стиле Unix89**Исходный код:** [Lib/glob.py](https://python-all.ru/src/3.7/Lib/glob.py)1011---1213Модуль [`glob`](https://python-all.ru/3.7/library/glob.html#module-glob) находит все пути, соответствующие заданному шаблону, по правилам, используемым в оболочке Unix, хотя результаты возвращаются в произвольном порядке. Подстановка тильды не выполняется, но `*`, `?` и диапазоны символов, заданные с помощью `[]`, будут правильно сопоставлены. Это делается с помощью функций [`os.scandir()`](https://python-all.ru/3.7/library/os.html#os.scandir) и [`fnmatch.fnmatch()`](https://python-all.ru/3.7/library/fnmatch.html#fnmatch.fnmatch), без фактического вызова подоболочки. Обратите внимание, что, в отличие от [`fnmatch.fnmatch()`](https://python-all.ru/3.7/library/fnmatch.html#fnmatch.fnmatch), [`glob`](https://python-all.ru/3.7/library/glob.html#module-glob) обрабатывает имена файлов, начинающиеся с точки (`.`), как особый случай. (Для подстановки тильды и переменных оболочки используйте [`os.path.expanduser()`](https://python-all.ru/3.7/library/os.path.html#os.path.expanduser) и [`os.path.expandvars()`](https://python-all.ru/3.7/library/os.path.html#os.path.expandvars).)1415Для точного совпадения заключите метасимволы в скобки. Например, `'[?]'` соответствует символу `'?'`.1617> **См. также**18>19> Модуль [`pathlib`](https://python-all.ru/3.7/library/pathlib.html#module-pathlib) предоставляет высокоуровневые объекты путей.2021#### `glob.glob(pathname, *, recursive=False)`2223Возвращает возможно пустой список имён путей, совпадающих с *pathname*, который должен быть строкой, содержащей спецификацию пути. *pathname* может быть абсолютным (например, `/usr/src/Python-1.5/Makefile`) или относительным (например, `../../Tools/*/*.gif`), и может содержать шаблоны в стиле оболочки. Сломанные символьные ссылки включаются в результат (как в оболочке).2425Если *recursive* истинно, шаблон «`**`» будет соответствовать любым файлам и нулю или более каталогам, подкаталогам и символическим ссылкам на каталоги. Если за шаблоном следует [`os.sep`](https://python-all.ru/3.7/library/os.html#os.sep) или [`os.altsep`](https://python-all.ru/3.7/library/os.html#os.altsep), файлы не будут сопоставляться.2627> **Примечание**28>29> Использование шаблона «`**`» в больших деревьях каталогов может занять чрезмерно много времени.3031Изменено в версии 3.5: Добавлена поддержка рекурсивных шаблонов с помощью «`**`».3233#### `glob.iglob(pathname, *, recursive=False)`3435Возвращает [итератор](https://python-all.ru/3.7/glossary.html#term-iterator), который порождает те же значения, что и [`glob()`](https://python-all.ru/3.7/library/glob.html#module-glob), но не сохраняет их все одновременно.3637#### `glob.escape(pathname)`3839Экранирует все специальные символы (`'?'`, `'*'` и `'['`). Это полезно, если нужно сопоставить произвольную буквальную строку, которая может содержать специальные символы. Специальные символы в точках монтирования дисков/UNC не экранируются, например, в Windows `escape('//?/c:/Quo vadis?.txt')` возвращает `'//?/c:/Quo vadis[?].txt'`.4041Новое в версии 3.4.4243Например, рассмотрим каталог, содержащий следующие файлы: `1.gif`, `2.txt`, `card.gif` и подкаталог `sub`, который содержит только файл `3.txt`. [`glob()`](https://python-all.ru/3.7/library/glob.html#module-glob) выдаст следующие результаты. Обратите внимание, что все начальные компоненты пути сохраняются.4445```python46>>> import glob47>>> glob.glob('./[0-9].*')48['./1.gif', './2.txt']49>>> glob.glob('*.gif')50['1.gif', 'card.gif']51>>> glob.glob('?.gif')52['1.gif']53>>> glob.glob('**/*.txt', recursive=True)54['2.txt', 'sub/3.txt']55>>> glob.glob('./**/', recursive=True)56['./', './sub/']57```5859Если каталог содержит файлы, начинающиеся с `.`, они не будут сопоставлены по умолчанию. Например, рассмотрим каталог, содержащий `card.gif` и `.card.gif`:6061```python62>>> import glob63>>> glob.glob('*.gif')64['card.gif']65>>> glob.glob('.c*')66['.card.gif']67```6869> **См. также**70>71> **Модуль [`fnmatch`](https://python-all.ru/3.7/library/fnmatch.html#module-fnmatch)**72>73> Расширение имен файлов (не путей) в стиле оболочки74