11.8. 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 |
[seq] |
corresponde a qualquer caractere em seq |
[!seq] |
corresponde a qualquer caractere ausente em seq |
Para uma correspondência literal, coloque os metacaracteres entre colchetes. Por exemplo, '[?]'
corresponde ao caractere '?'
.
Note that the filename separator ('/'
on Unix) is not special to this
module. See module glob
for pathname expansion (glob
uses
fnmatch()
to match pathname segments). Similarly, filenames starting with
a period are not special for this module, and are matched by the *
and ?
patterns.
-
fnmatch.
fnmatch
(filename, pattern)¶ Testa se a string filename corresponde à string pattern, 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 file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print(file)
-
fnmatch.
fnmatchcase
(filename, pattern)¶ Testa se filename corresponde ao pattern, retornando
True
ouFalse
; a comparação diferencia maiúsculas de minúsculas e não se aplicaos.path.normcase()
.
-
fnmatch.
filter
(names, pattern)¶ Retorna o subconjunto da lista de names que correspondem pattern. É o mesmo que
[n for n in names if fnmatch(n, pattern)]
, mas implementado com mais eficiência.
-
fnmatch.
translate
(pattern)¶ Retorna o pattern no estilo shell convertido em uma expressão regular para usar com
re.match()
.Exemplo:
>>> import fnmatch, re >>> >>> regex = fnmatch.translate('*.txt') >>> regex '.*\\.txt\\Z(?ms)' >>> reobj = re.compile(regex) >>> reobj.match('foobar.txt') <_sre.SRE_Match object; span=(0, 10), match='foobar.txt'>
Ver também
- Módulo
glob
- Expansão de caminho no estilo shell do Unix.