fnmatch: coincidencia de patrones de nombre de archivo de Unix en Python

Este módulo se utiliza para hacer coincidir los comodines de estilo shell de Unix. fnmatch() compara un solo nombre de archivo con un patrón y devuelve VERDADERO si coinciden; de lo contrario, devuelve FALSO.
La comparación distingue entre mayúsculas y minúsculas cuando el sistema operativo utiliza un sistema de archivos que distingue entre mayúsculas y minúsculas.
Los caracteres especiales y sus funciones que se utilizan en los comodines estilo shell son:

  • ‘*’ – coincide con todo
  • ‘?’ – coincide con cualquier carácter individual
  • ‘[seq]’: coincide con cualquier carácter en seq
  • ‘[!seq]’: coincide con cualquier carácter que no esté en la secuencia

Los metacaracteres deben estar entre corchetes para una coincidencia literal. Por ejemplo, ‘[?]’ coincide con el carácter ‘?’.

Funciones proporcionadas por el módulo fnmatch

  1. fnmatch.fnmatch(nombre de archivo, patrón) : esta función comprueba si la string de nombre de archivo dada coincide con la string de patrón y devuelve un valor booleano. Si el sistema operativo no distingue entre mayúsculas y minúsculas, ambos parámetros se normalizarán a minúsculas o mayúsculas antes de realizar la comparación.

    Ejemplo: secuencia de comandos para buscar todos los archivos que comienzan con ‘fnmatch’ y terminan en ‘.py’

    # Python program to illustrate 
    # fnmatch.fnmatch(filename, pattern) 
    import fnmatch 
    import os 
      
    pattern = 'fnmatch_*.py'
    print ('Pattern :', pattern )
    print()
      
    files = os.listdir('.'
    for name in files: 
        print ('Filename: %-25s %s' % (name, fnmatch.fnmatch(name, pattern))

    Producción :

    $python fnmatch_fnmatch.py
    
    Pattern : fnmatch_*.py
    
    Filename: __init__.py               False
    Filename: fnmatch_filter.py         True
    Filename: fnmatch_fnmatch.py        True
    Filename: fnmatch_fnmatchcase.py    True
    Filename: fnmatch_translate.py      True
    Filename: index.rst                 False
    
  2. fnmatch.fnmatchcase(nombre de archivo, patrón): esta función realiza la comparación entre mayúsculas y minúsculas y prueba si la string de nombre de archivo dada coincide con la string de patrón y devuelve un valor booleano.

    Ejemplo: secuencia de comandos para una comparación que distingue entre mayúsculas y minúsculas, independientemente de la configuración del sistema de archivos y del sistema operativo.

    # Python program to illustrate 
    # fnmatch.fnmatchcase(filename, pattern) 
    import fnmatch 
    import os 
      
    pattern = 'FNMATCH_*.PY'
    print ('Pattern :', pattern) 
    print()
      
    files = os.listdir('.'
      
    for name in files: 
        (print 'Filename: %-25s %s' % (name, fnmatch.fnmatchcase(name, pattern)))

    Producción :

    $python fnmatch_fnmatchcase.py
    
    Pattern : FNMATCH_*.PY
    
    Filename: __init__.py               False
    Filename: fnmatch_filter.py         False
    Filename: FNMATCH_FNMATCH.PY        True
    Filename: fnmatch_fnmatchcase.py    False
    Filename: fnmatch_translate.py      False
    Filename: index.rst                 False
    
  3. fnmatch.filter(nombres, patrón): esta función devuelve el subconjunto de la lista de nombres pasados ​​en la función que coinciden con el patrón dado.

    Ejemplo: filtrar archivos por más de una extensión de archivo.

    # Python program to illustrate 
    # fnmatch.filter(names, pattern) 
    import fnmatch 
    import os 
       
    pattern = 'fnmatch_*.py'
    print ('Pattern :', pattern )
       
    files = os.listdir('.'
    print ('Files :', files) 
       
    print ('Matches :', fnmatch.filter(files, pattern))

    Producción :

    $python fnmatch_filter.py
    
    Pattern : fnmatch_*.py
    Files   : ['__init__.py', 'fnmatch_filter.py', 'fnmatch_fnmatch.py', 
    'fnmatch_fnmatchcase.py', 'fnmatch_translate.py', 'index.rst']
    Matches : ['fnmatch_filter.py', 'fnmatch_fnmatch.py',
    'fnmatch_fnmatchcase.py', 'fnmatch_translate.py']
    
  4. fnmatch.translate(patrón): esta función devuelve el patrón de estilo shell convertido en una expresión regular para usar con re.match() (re.match() solo coincidirá al principio de la string y no al principio de cada línea).

    # Python program to illustrate 
    # fnmatch.translate(pattern) 
    import fnmatch, re 
      
    regex = fnmatch.translate('*.txt'
    reobj = re.compile(regex) 
      
    print(regex) 
    print(reobj.match('foobar.txt')) 

    Producción :

    '(?s:.*\\.txt)\\Z'
    _sre.SRE_Match object; span=(0, 10), match='foobar.txt'
    

Este artículo es una contribución de Aditi Gupta . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *