Spec-Zone.ru › Python 3.11

glob — Расширение шаблонов имен файлов в стиле Unix

Исходный код: Lib/glob.py

Модуль glob находит все имена файлов, соответствующие заданному шаблону, согласно правилам, используемым в оболочке Unix, хотя результаты возвращаются в произвольном порядке. Расширение тильды не выполняется, но *, ?, и диапазоны символов, выраженные с помощью [], будут правильно сопоставлены. Это делается с помощью функций os.scandir() и fnmatch.fnmatch(), а не путём фактического вызова подоболочки.

Обратите внимание, что файлы, начинающиеся с точки (.), могут быть сопоставлены только шаблонами, которые также начинаются с точки, в отличие от fnmatch.fnmatch() или pathlib.Path.glob(). (Для расширения тильды и переменных оболочки используйте os.path.expanduser() и os.path.expandvars().)

Для точного совпадения заключите метасимволы в квадратные скобки. Например, '[?]' соответствует символу '?'.

См. также

Модуль pathlib предлагает объекты путей высокого уровня.

glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=False)

Возвращает, возможно, пустой список имён путей, соответствующих pathname, который должен быть строкой, содержащей спецификацию пути. pathname может быть абсолютным (например, /usr/src/Python-1.5/Makefile) или относительным (например, ../../Tools/*/*.gif) и может содержать подстановки в стиле оболочки. Сломанные символические ссылки включаются в результаты (как в оболочке). Отсортированы ли результаты или нет, зависит от файловой системы. Если файл, удовлетворяющий условиям, удаляется или добавляется во время вызова этой функции, то не определено, будет ли имя пути для этого файла включено.

Если root_dir не None, он должен быть объектом, похожим на путь, указывающим корневой каталог для поиска. Он оказывает такое же влияние на glob(), как и изменение текущего каталога перед его вызовом. Если pathname является относительным, результат будет содержать пути, относительные к root_dir.

Эта функция может поддерживать пути, относительные к дескрипторам каталогов с параметром dir_fd.

Если recursive равно True, шаблон “**” будет соответствовать любым файлам и нулю или более каталогам, подкаталогам и символическим ссылкам на каталоги. Если за шаблоном следует os.sep или os.altsep, то файлы не будут соответствовать.

Если include_hidden равно True, шаблон “**” будет соответствовать скрытым каталогам.

Вызывает событие аудита аудита glob.glob с аргументами pathname, recursive.

Вызывает событие аудита аудита glob.glob/2 с аргументами pathname, recursive, root_dir, dir_fd.

Примечание

Использование шаблона “**” в больших деревьях каталогов может потребовать неоправданно много времени.

Изменено в версии 3.5: Поддержка рекурсивных шаблонов с использованием “**”.

Изменено в версии 3.10: Добавлены параметры root_dir и dir_fd.

Изменено в версии 3.11: Добавлен параметр include_hidden.

glob.iglob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=False)

Возвращает итератор, который возвращает те же значения, что и glob(), не храня их все одновременно.

Вызывает событие аудита аудита glob.glob с аргументами pathname, recursive.

Вызывает событие аудита аудита glob.glob/2 с аргументами pathname, recursive, root_dir, dir_fd.

Изменено в версии 3.5: Поддержка рекурсивных шаблонов с использованием “**”.

Изменено в версии 3.10: Добавлены параметры root_dir и dir_fd.

Изменено в версии 3.11: Добавлен параметр include_hidden.

glob.escape(pathname)

Экранирует все специальные символы ('?', '*' и '['). Это полезно, если вы хотите сопоставить произвольную строку, которая может содержать специальные символы. Специальные символы в пути к дискам/совместным ресурсам UNC не экранируются, например, в Windows escape('//?/c:/Quo vadis?.txt') возвращает '//?/c:/Quo vadis[?].txt'.

Добавлена в версии 3.4.

Например, рассмотрим каталог, содержащий следующие файлы: 1.gif, 2.txt, card.gif и подкаталог sub, который содержит только файл 3.txt. glob() даст следующие результаты. Обратите внимание, как сохраняются все начальные компоненты пути.

>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
>>> glob.glob('**/*.txt', recursive=True)
['2.txt', 'sub/3.txt']
>>> glob.glob('./**/', recursive=True)
['./', './sub/']

Если каталог содержит файлы, начинающиеся с ., они по умолчанию не будут сопоставлены. Например, рассмотрим каталог, содержащий card.gif и .card.gif:

>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']

См. также

Module fnmatch

Сопоставление имён файлов (а не путей) в стиле оболочки

© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/glob.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API