fnmatch
— Coincidencia de patrones de nombre de archivos Unix¶
Código fuente: Lib/fnmatch.py
Este módulo proporciona soporte para comodines de estilo shell de Unix, que no son lo mismo que las expresiones regulares (que se documentan en el módulo re
). Los caracteres especiales utilizados en los comodines de estilo shell son:
Patrón |
Significado |
---|---|
|
coincide con todo |
|
coincide con un solo carácter |
|
coincide con cualquier carácter presente en seq |
|
coincide con cualquier carácter ausente en seq |
Para una coincidencia literal, envuelva los meta-caracteres entre paréntesis. Por ejemplo, '[?]'
coincide con el carácter '?'
.
Ten en cuenta que el separador de nombre de archivo ('/'
en Unix) no es tratado de forma especial en este módulo. Consulta el módulo glob
para realizar expansiones de nombre de ruta (glob
usa filter()
para hacer coincidir con los componentes del nombre de ruta). Del mismo modo, los nombres de archivo que comienzan con un punto tampoco son tratados de forma especial por este módulo y se corresponden con los patrones *
y ?
.
-
fnmatch.
fnmatch
(filename, pattern)¶ Prueba si la cadena de caracteres filename coincide con la cadena pattern, retornando
True
oFalse
. Ambos parámetros se normalizan entre mayúsculas y minúsculas usandoos.path.normcase()
.fnmatchcase()
se puede utilizar para realizar una comparación que distingue entre mayúsculas y minúsculas, independientemente de si es estándar para el sistema operativo.Este ejemplo imprimirá todos los nombres de archivo en el directorio actual con la extensión
.txt
:import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print(file)
-
fnmatch.
fnmatchcase
(filename, pattern)¶ Prueba si filename coincide con pattern, retornando
True
oFalse
; la comparación distingue entre mayúsculas y minúsculas y no aplicaos.path.normcase()
.
-
fnmatch.
filter
(names, pattern)¶ Construye una lista a partir de los elementos de los names iterables que coinciden con el pattern. Es lo mismo que
[n for n in names if fnmatch(n, pattern)]
, pero implementado de manera más eficiente.
-
fnmatch.
translate
(pattern)¶ Retorna el pattern estilo shell convertido a una expresión regular para usar con
re.match()
.Ejemplo:
>>> 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 también
- Módulo
glob
Expansión de ruta estilo shell en Unix.