glob

Расширение шаблона имени пути в стиле Unix

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

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

Смотрите также: модуль pathlib предлагает высокоуровневые объекты пути.

Модуль предоставляет следующие встроенные функции:

  • glob () - возвращает список имен путей, соответствующих заданной спецификации

  • iglob ()

  • escape ()

Например, рассмотрим каталог, содержащий следующие файлы: 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 - расширение имени файла (не пути) в стиле оболочки

Last updated