English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Inicializar un array multidimensional en C

Aquí, veremos cómo usar Python para obtener la técnica de coincidencia de patrones de shell de UNIX. Hay un nombrefnmatchmódulo, que se utiliza para completar el trabajo. Este módulo se utiliza para comparar el nombre del archivo con el patrón y luego devolver True o False según el resultado de la coincidencia.

Primero, necesitamos importarlofnmatchMódulo de biblioteca estándar.

import fnmatch

En el terminal Unix, hay algunos comodines que pueden coincidir con los patrones. Estos son los siguientes-

  • '*'* estrella se utiliza para coincidir con todo.

  • '?' pregunta se utiliza para coincidir con un solo carácter.

  • [seq] la secuencia se utiliza para coincidir con caracteres en la secuencia

  • [!seq] no está en la secuencia se utiliza para coincidir con caracteres que no existen en la secuencia.

Si queremos buscar asteriscos o preguntas como caracteres, debemos usarlos de esta manera: [*] o [?]

Elfnmatch()método

Elfnmatch()El método tiene dos parámetros, que son el nombre del archivo y el patrón. Esta función se utiliza para verificar si el nombre del archivo coincide con el patrón dado. Si el sistema operativo distingue entre mayúsculas y minúsculas, los parámetros se estandarizarán a mayúsculas o minúsculas antes de la coincidencia.

Código de ejemplo

import fnmatch
import os
file_pattern = 'test_f*'
files = os.listdir('./unix_files)
for filename in files:
   print('Archivo: {}\t: {}'.format(filename, fnmatch.fnmatch(filename, file_pattern)))

Resultado de salida

$ python3 310.UNIX_filename.py
Archivo: test_file5.txt: True
Archivo: test_file2.png: Verdadero
Archivo: test_file1.txt: True
Archivo: another_file.txt: Falso
Archivo: TEST_FILE4.txt: Falso
Archivo: abc.txt: Falso
Archivo: test_file3.txt: True
$

Elfilter()método

Elfilter()El método también tiene dos parámetros. El primero es el nombre, y el segundo es el patrón. Este patrón encuentra la lista de nombres de archivo coincidentes en la lista de todos los nombres de archivo.

Código de ejemplo

import fnmatch
import os
file_pattern = 'test_f*'
files = os.listdir('./unix_files)
match_file = fnmatch.filter(files, file_pattern)
   print('Todos los archivos:') + str(files))
      print('\nArchivos coincidentes:') + str(match_file))

Resultado de salida

$ python3 310.UNIX_filename.py
Todos los archivos:['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'otro_archivo.txt', 'TEST_FILE4.txt', 'abc.txt', 'test_file3.txt'
Archivos coincidentes:['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'test_file3.txt'
$

Eltranslate()método

Eltranslate()El método toma un parámetro. Este parámetro es un patrón. Podemos usar esta función para convertir un patrón de estilo de shell en otro patrón para que podamos usar expresiones regulares en Python para coincidir.

Código de ejemplo

import fnmatch, re
file_pattern = 'test_f*.txt'
unix_regex = fnmatch.translate(file_pattern)
regex_object = re.compile(unix_regex)
   print('Expresión regular:') + str(unix_regex))
      print('Objeto de coincidencia:') + str(regex_object.match('test_file_abcd123.txt')))

Resultado de salida

$ python3 310.UNIX_filename.py
Expresión regular:(?s:test_f.*\.txt)\Z
Objeto de coincidencia: <_sre.SRE_Match objeto; span=(0, 21), match='test_file_abcd123.txt'>
$