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) не экранируются, например, в 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']
См. также
-
Modulefnmatch -
Сопоставление шаблонов имён файлов (а не путей) в стиле оболочки
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/glob.html