"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        |
+--------------+--------------------------------------+
| "[seq]"      | coincide con cualquier carácter      |
|              | presente en *seq*                    |
+--------------+--------------------------------------+
| "[!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" o "False". Ambos parámetros se
   normalizan entre mayúsculas y minúsculas usando
   "os.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" o
   "False"; la comparación distingue entre mayúsculas y minúsculas y
   no aplica "os.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.
