glob — Расширение шаблонов имен файлов в стиле Unix
Исходный код: 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']
См. также
-
Modulefnmatch - Сопоставление имен файлов (а не путей) с шаблонами в стиле оболочки
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.5/library/glob.html