English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ecco come possiamo ottenere la tecnica di abbinamento dei modelli del nome del file del shell UNIX in Python. C'è un nomefnmatchmodulo, utilizzato per completare il lavoro. Questo modulo viene utilizzato per confrontare i nomi dei file con lo schema e restituire True o False in base al risultato della corrispondenza.
Prima di utilizzarlo, dobbiamo importarlofnmatchModulo di libreria standard.
import fnmatch
Nel terminale Unix, ci sono alcuni caratteri jolly che possono abbinare il modello. Questi sono elencati di seguito-
L'asterisco '*' viene utilizzato per abbinare tutto.
Il punto interrogativo '?' viene utilizzato per abbinare un singolo carattere.
[seq] sequenza viene utilizzata per abbinare i caratteri nella sequenza
[!seq] non viene utilizzato per abbinare i caratteri che non esistono nella sequenza.
Se vogliamo cercare asterischi o domande come caratteri, dobbiamo usarli così: [*] o [?]
fnmatch()
metodoIlfnmatch()
Il metodo ha due parametri, rispettivamente il nome del file e lo schema. Questa funzione viene utilizzata per verificare se il nome del file corrisponde al modello fornito. Se il sistema operativo distingue tra maiuscole e minuscole, i parametri vengono normalizzati in maiuscole o minuscole prima della corrispondenza.
import fnmatch import os file_pattern = 'test_f*' files = os.listdir('./unix_files') for filename in files: print('File: {}\t: {}'.format(filename, fnmatch.fnmatch(filename, file_pattern)))
Risultato di output
$ python3 310.UNIX_filename.py File: test_file5.txt : True File: test_file2.png : True File: test_file1.txt : True File: another_file.txt : False File: TEST_FILE4.txt : False File: abc.txt : False File: test_file3.txt : True $
filter()
metodoIlfilter()
Il metodo ha anche due parametri. Il primo è il nome, il secondo è lo schema. Questo schema trova la lista dei nomi dei file corrispondenti tra tutti i nomi dei file nella lista.
import fnmatch import os file_pattern = 'test_f*' files = os.listdir('./unix_files') match_file = fnmatch.filter(files, file_pattern) print('Tutti i file:' + str(files)) print('\nFile corrispondenti:' + str(match_file))
Risultato di output
$ python3 310.UNIX_filename.py Tutti i file: ['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'another_file.txt', 'TEST_FILE4.txt', 'abc.txt', 'test_file3.txt'] File corrispondenti: ['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'test_file3.txt'] $
translate()
metodoIltranslate()
Il metodo accetta un parametro. Il parametro è un modello. Possiamo utilizzare questa funzione per convertire un modello di stile esterno in un altro modello per utilizzare l'espressione regolare in Python per la corrispondenza.
import fnmatch, re file_pattern = 'test_f*.txt' unix_regex = fnmatch.translate(file_pattern) regex_object = re.compile(unix_regex) print('Espressione Regolare:' + str(unix_regex)) print('Oggetto Match:' + str(regex_object.match('test_file_abcd123.txt')))
Risultato di output
$ python3 310.UNIX_filename.py Espressione Regolare:(?s:test_f.*\.txt)\Z Oggetto Match: <_sre.SRE_Match oggetto; span=(0, 21), match='test_file_abcd123.txt'> $