fnmatch — Соответствие шаблону имени файла Unix¶
Исходный код: Lib/fnmatch.py
Модуль обеспечивает поддержку подстановочных знаков в стиле оболочки Unix,
которые не совпадают с регулярными выражениями (которые
задокументированы в модуле re). Специальные символы используемый в
подстановочных знаках оболочечного стиля:
| Шаблон | Значение |
|---|---|
* |
соответствует всему |
? |
соответствует любому единичному символу |
[seq] |
соответствует любому символу в seq |
[!seq] |
соответствует любому символу не в seq |
Для совпадения литерал заключите мета-символы в скобки. Например,
'[?]' соответствует символ '?'.
Обратите внимание, что сепаратор имени файла ('/' в Unix) является
специальным предложением не к этому модулю. См. модуль glob для
расширения имени пути (glob использует filter() для сопоставления
сегментов имени пути). Аналогично, имена файлов, начинающиеся с периода, не
являются специальными для этого модуля и соответствуют шаблонам * и
?.
-
fnmatch.fnmatch(filename, pattern)¶ Тест, соответствует ли filename строка pattern строка, возвращая
TrueилиFalse. Оба параметра нормализуются по регистру с помощьюos.path.normcase().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; сравнение чувствительно к регистру и не применяетсяos.path.normcase().
-
fnmatch.filter(names, pattern)¶ Создать список из тех элементов итерируемого names, которые соответствуют pattern. Он такой же, как
[n for n in names if fnmatch(n, pattern)], но реализован более эффективно.
-
fnmatch.translate(pattern)¶ Стиль шелл возвращает pattern, преобразованный в регулярное выражение для использования с
re.match().Пример:
>>> import fnmatch, re >>> >>> regex = fnmatch.translate('*.txt') >>> regex '(?s:.*\\.txt)\\Z' >>> reobj = re.compile(regex) >>> reobj.match('foobar.txt') <re.Match object; span=(0, 10), match='foobar.txt'>
См.также
- Модуль
glob - Расширение пути в стиле оболочки Unix.
