Spec-Zone.ru › Python 3.8

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

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

Модуль glob находит все имена путей, соответствующие заданному шаблону, согласно правилам, используемым оболочкой Unix, хотя результаты возвращаются в произвольном порядке. Расширение тильды не выполняется, но *, ?, и диапазоны символов, выраженные с помощью [], будут правильно сопоставлены. Это делается с помощью функций os.scandir() и fnmatch.fnmatch(), а не путем фактического вызова подоболочки. Обратите внимание, что в отличие от fnmatch.fnmatch(), 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.8/library/glob.html

Spec-Zone.ru

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