11.7. glob – расширение шаблонов имён путей в стиле Unix¶glob – Unix style pathname pattern expansion
Исходный код: Lib/glob.py
Модуль glob находит все пути, соответствующие заданному шаблону, по правилам, используемым в оболочке Unix, хотя результаты возвращаются в произвольном порядке. Подстановка тильды не выполняется, но *, ? и диапазоны символов, заданные с помощью [], будут правильно сопоставлены. Это делается с помощью функций os.listdir() и 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, совпадают только каталоги и подкаталоги.Примечание
Использование шаблона «
**» в больших деревьях каталогов может занять чрезмерно много времени.Изменено в версии 3.5: Добавлена поддержка рекурсивных шаблонов с помощью «
**».
-
glob.iglob(pathname, recursive=False)¶ Возвращает итератор, который порождает те же значения, что и
glob(), но не сохраняет их все одновременно.
-
glob.escape(pathname)¶ Экранирует все специальные символы (
'?','*'и'['). Это полезно, если нужно сопоставить произвольную буквальную строку, которая может содержать специальные символы. Специальные символы в точках монтирования дисков/UNC не экранируются, например, в Windowsescape('//?/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']
См. также
- Модуль
fnmatch - Расширение имен файлов (не путей) в стиле оболочки