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 будет верен, то образец «
**» будет соответствовать любым файлам и нолю или большему количеству справочников, подкаталогов и символических ссылок со справочниками. Если за шаблоном следуетos.sepилиos.altsep, файлы не будут совпадать.Raises an auditing event
glob.globwith argumentspathname,recursive.Примечание
Использование шаблона «
**» в больших деревьях каталогов может занять слишком много времени.Изменено в версии 3.5: Поддержка рекурсивных глобалов с помощью «
**.»
-
glob.iglob(pathname, *, recursive=False)¶ Возвращает итератор, который дает те же самые значения, что и
glob(), не сохраняя их все одновременно.Raises an auditing event
glob.globwith argumentspathname,recursive.
-
glob.escape(pathname)¶ Скрытие всех специальных символов (
'?','*'и'['). Это полезно, если требуется сопоставить произвольное литерал строка, которое может содержать специальные символы. Специальных знаков в диск/UNC sharepoints не экранируются, например в 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 - Расширение имени файла в стиле шелл (не пути).
