Spec-Zone.ru › Python 3.9

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, *, recursive=False)

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

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

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

Примечание

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

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

glob.iglob(pathname, *, recursive=False)

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

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

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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/glob.html

Spec-Zone.ru

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