fnmatch – сопоставление имён файлов с шаблонами Unix¶fnmatch – Unix filename pattern matching
Этот модуль обеспечивает поддержку подстановочных знаков в стиле оболочки Unix, которые не являются тем же, что и регулярные выражения (документированные в модуле re). Специальные символы, используемые в подстановочных знаках в стиле оболочки:
| Шаблон | Значение |
|---|---|
| * | соответствует всему |
| ? | соответствует одному любому символу |
| [seq] | соответствует любому символу из seq |
| [!seq] | соответствует любому символу не из seq |
Обратите внимание, что разделитель имен файлов ('/' в Unix) не является специальным для этого модуля. См. модуль glob для расширения путей (glob использует fnmatch() для сопоставления сегментов путей). Аналогично, имена файлов, начинающиеся с точки, не являются специальными для этого модуля и сопоставляются с * и ? шаблонами.
- fnmatch.fnmatch(filename, pattern)¶
Проверяет, соответствует ли строка filename шаблону pattern, возвращая true или false. Если операционная система не учитывает регистр, оба параметра приводятся к нижнему или верхнему регистру перед выполнением сравнения. Если требуется сравнение с учётом регистра вне зависимости от того, является ли это стандартным для вашей операционной системы, используйте вместо этого fnmatchcase().
Этот пример выведет все имена файлов в текущем каталоге с расширением .txt:
import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print(file)
- fnmatch.fnmatchcase(filename, pattern)¶
- Проверяет, соответствует ли filename шаблону pattern, возвращая true или false; сравнение выполняется с учётом регистра.
- fnmatch.filter(names, pattern)¶
- Возвращает подмножество списка names, которые соответствуют pattern. Это то же самое, что [n for n in names if fnmatch(n, pattern)], но реализовано более эффективно.
- fnmatch.translate(pattern)¶
Возвращает pattern в стиле оболочки, преобразованный в регулярное выражение.
Пример:
>>> import fnmatch, re >>> >>> regex = fnmatch.translate('*.txt') >>> regex '.*\\.txt$' >>> reobj = re.compile(regex) >>> print(reobj.match('foobar.txt')) <_sre.SRE_Match object at 0x...>
См. также
- Модуль glob
- Раскрытие путей в стиле оболочки Unix.