fnmatch
— Correspondência de padrões de nome de arquivo Unix¶
Código-fonte: Lib/fnmatch.py
Este módulo fornece suporte para curingas no estilo shell do Unix, que não são iguais às expressões regulares (documentadas no módulo re
). Os caracteres especiais usados nos curingas no estilo de shell são:
Padrão |
Significado |
---|---|
|
corresponde a tudo |
|
Corresponde a qualquer caractere único |
|
corresponde a qualquer caractere em seq |
|
corresponde a qualquer caractere ausente em seq |
Para uma correspondência literal, coloque os metacaracteres entre colchetes. Por exemplo, '[?]'
corresponde ao caractere '?'
.
Note que o separador de nome de arquivo ('/'
no Unix) não é especial para este módulo. Veja o módulo glob
para expansão do nome do caminho (glob
usa filter()
para corresponder aos segmentos do nome do caminho). Da mesma forma, os nomes de arquivos que começam com um ponto final não são especiais para este módulo e são correspondidos pelos padrões *
e ?
.
Unless stated otherwise, “filename string” and “pattern string” either refer to
str
or ISO-8859-1
encoded bytes
objects. Note that the
functions documented below do not allow to mix a bytes
pattern with
a str
filename, and vice-versa.
Finally, note that functools.lru_cache()
with a maxsize of 32768
is used to cache the (typed) compiled regex patterns in the following
functions: fnmatch()
, fnmatchcase()
, filter()
.
- fnmatch.fnmatch(name, pat)¶
Testa se a string do nome de arquivo name corresponde à string de padrão pat, retornando
True
ouFalse
. Ambos os parâmetros são normalizados em maiúsculas e minúsculas usandoos.path.normcase()
.fnmatchcase()
pode ser usado para realizar uma comparação com distinção entre maiúsculas e minúsculas, independentemente de ser padrão para o sistema operacional.Este exemplo vai exibir todos os nomes de arquivos no diretório atual com a extensão
.txt
:import fnmatch import os for arquivo in os.listdir('.'): if fnmatch.fnmatch(arquivo, '*.txt'): print(arquivo)
- fnmatch.fnmatchcase(name, pat)¶
Testa se a string do nome de arquivo name corresponde à string de padrão pat, retornando
True
ouFalse
; a comparação diferencia maiúsculas de minúsculas e não se aplica aos.path.normcase()
.
- fnmatch.filter(names, pat)¶
Construct a list from those elements of the iterable of filename strings names that match the pattern string pat. It is the same as
[n for n in names if fnmatch(n, pat)]
, but implemented more efficiently.
- fnmatch.translate(pat)¶
Return the shell-style pattern pat converted to a regular expression for using with
re.match()
. The pattern is expected to be astr
.Exemplo:
>>> 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'>
Ver também
- Módulo
glob
Expansão de caminho no estilo shell do Unix.