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

10.7. glob – расширение шаблонов путевых имён в стиле Unixglob – Unix style pathname pattern expansion

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


Модуль glob находит все пути, соответствующие заданному шаблону, по правилам, используемым в оболочке Unix, хотя результаты возвращаются в произвольном порядке. Подстановка тильды не выполняется, но *, ? и диапазоны символов, заданные с помощью [], будут правильно сопоставлены. Это делается с помощью функций os.listdir() и fnmatch.fnmatch(), без фактического вызова подоболочки. Обратите внимание, что, в отличие от fnmatch.fnmatch(), glob обрабатывает имена файлов, начинающиеся с точки (.), как особый случай. (Для подстановки тильды и переменных оболочки используйте os.path.expanduser() и os.path.expandvars().)

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

glob.glob(pathname)

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

glob.iglob(pathname)

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

Новое в версии 2.5.

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

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

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

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

См. также

Модуль fnmatch

Расширение имен файлов (не путей) в стиле оболочки