fnmatch
— Unix filename pattern matching¶
Вихідний код: Lib/fnmatch.py
Цей модуль підтримує символи підстановки у стилі оболонки Unix, які не відрізняються від регулярних виразів (які задокументовані в модулі re
). Спеціальні символи, які використовуються в символах підстановки у стилі оболонки:
Візерунок |
Значення |
---|---|
|
відповідає всьому |
|
відповідає будь-якому окремому символу |
|
відповідає будь-якому символу в seq |
|
відповідає будь-якому символу не в seq |
Для буквального збігу заберіть метасимволи в дужки. Наприклад, ''[?]'
відповідає символу ''?'
.
Зауважте, що роздільник імен файлів ('/'
в Unix) не є особливим для цього модуля. Дивіться модуль glob
для розширення імені шляху (glob
використовує filter()
для відповідності сегментам імені шляху). Подібним чином назви файлів, що починаються з крапки, не є спеціальними для цього модуля та відповідають шаблонам *
і ?
.
-
fnmatch.
fnmatch
(filename, pattern)¶ Test whether the filename string matches the pattern string, returning
True
orFalse
. Both parameters are case-normalized usingos.path.normcase()
.fnmatchcase()
can be used to perform a case-sensitive comparison, regardless of whether that’s standard for the operating system.У цьому прикладі буде надруковано всі імена файлів у поточному каталозі з розширенням
.txt
:import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print(file)
-
fnmatch.
fnmatchcase
(filename, pattern)¶ Test whether filename matches pattern, returning
True
orFalse
; the comparison is case-sensitive and does not applyos.path.normcase()
.
-
fnmatch.
filter
(names, pattern)¶ Construct a list from those elements of the iterable names that match pattern. It is the same as
[n for n in names if fnmatch(n, pattern)]
, but implemented more efficiently.
-
fnmatch.
translate
(pattern)¶ Return the shell-style pattern converted to a regular expression for using with
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.