Python fnmatch

Python fnmatch

Podczas pracy z plikami i systemami plików często przegląda wiele plików, aby odkryć określony plik. Znalezienie niezbędnych plików z wielu plików przyjmie wieczność, jeśli zostanie wykonane ręcznie. W rezultacie systemy operacyjne i języki programowania obejmują urządzenia do dynamicznego lokalizowania niezbędnych plików. Te narzędzia zwykle kierują nazwy plików i używają dopasowywania wzorów, aby spróbować zlokalizować odpowiednie pliki.

Biblioteka FNMatch w języku programowania Python może być używana do lokalizacji plików w systemach operacyjnych opartych na UNIX, takich jak macOS i Linux. W tym artykule wykorzystuje moduł FNMatch w Pythonie do dopasowywania wzorców.

Co to jest fnmatch?

Jest to powszechny pakiet Python do dopasowywania wieloznacznych kart, takich jak te używane w powłokach Unix. Jeśli pojedyncza nazwa pliku pasuje do wzoru, Fnmatch () zwraca true; W przeciwnym razie zwraca fałsz.

Funkcje dostarczone przez moduł FNMatch

Moduł FNMatch zawiera funkcje fnmatch (), fnmatchcase (), filtr () i tłumacz (). Przykładowe programy, które pokazują każdą funkcję dogłębnie, można znaleźć poniżej.

Przykład 1:

Jest to pierwszy z kilku przykładów w naszym artykule na temat metody FNMatch (). Jeśli podana nazwa pliku pasuje do ciągu wzorca, metoda wykonana FNMatch () zwraca wartość logiczną. Jeśli system operacyjny jest wrażliwy na przypadek, porównanie nastąpi po znormalizowaniu obu parametrów do wszystkich znaków niższych i górnych.

Oto program; Najpierw zaimportowaliśmy moduł FNMatch i OS. Następnie szukamy wszystkich plików, które zaczynają się od „fnmatch” i kończą się '.py '. Na koniec wydrukuj wynik, jak widać w ostatnim wierszu kodu.

Importuj fnmatch
Import OS
patrn = 'fnmatch_*.py '
druk („wzór to”, patrn)
wydrukować()
FILLE_NAME = OS.Listdir ('.')
dla nazwy w nazwie pliku:
Drukuj („Nazwa pliku: %-25S %s ' %(nazwa, fnmatch.fnmatch (nazwa, patrn)))

Tutaj, na wyjściu, widać, że wzór i pliki pasujące do wzoru są wymienione.

Przykład 2:

Jeszcze jeden przykład wyjaśnia funkcję FNMatch. Ta funkcja wymaga nazwy pliku i wzoru ciągu znaków. Nazwa pliku jest porównywana z wzorem, a metoda zwraca prawdziwą lub fałsz.

W poniższym przykładzie zaimportowaliśmy moduły GLOB i FNMACH, które są wymagane do wykonania tego programu. Następnie opracowaliśmy listę wszystkich plików obecnych w bieżącym katalogu, które pasują do „*.wzór py ”.

Import Glob, fnmatch
dla plik_names (glob.Glob ('*.*')):
if (fnmatch.fnmatch (pliki_names, „*.py ")):
print (pliki_names)

Below you can find out that the files that match the pattern are successfully retrieved and listed.

Przykład 3:

Teraz omówimy funkcję fnmatchcase () fnmatch. Jeśli ciąg nazwy pliku odpowiada zdefiniowanemu ciągowi wzorcu, ta funkcja wykonuje porównanie (wrażliwy na przypadek w tym scenariuszu) i zwraca wartość logiczną. Wartość jest prawdziwa lub fałsz. Niezależnie od ustawień systemu plików lub systemu operacyjnego, możesz znaleźć kod programu dla porównania wrażliwych na przypadki tutaj.

Po zaimportowaniu modułu FNMatch i OS zdefiniowaliśmy wzór (wskazany jako patrn w kodzie). Następnie wymieniliśmy wszystkie pliki i wartości logiczne, jeśli plik pasuje do wzoru.

Importuj fnmatch
Import OS
patrn = 'fnmatch_*.Py '
druk („wzór:”, patrn)
wydrukować()
FILLE_NAME = OS.Listdir ('.')
dla nazwy w nazwie pliku:
(Drukuj („Nazwa pliku: %-25 %S ' %(nazwa, fnmatch.fnmatchcase (nazwa, patrn))))

Below you can find the output, and as you can see that all files return false.

Przykład 4:

W innym przykładzie wspomnianych poniżej FNMatchCase wszystkie pliki zaczynające się od litera „H” i rozszerzenie ”.py 'są najpierw gromadzone w obiekcie listy plików. Metoda fnmatch () służy do wyświetlania tylko nazw, które zaczynają się od liter H.'

Import Glob, fnmatch
pliki = glob.Glob ("H*.*”)
akta
['dane.txt ', „demo.txt ', „historia.py ', „History_internal.py ', „new_file.txt ', „pdb_history.sqlite ',]
dla plików w plikach:
Jeśli fnmatch.fnmatchcase (plik, „h*.*") == True:
Drukuj plik)

Poniżej historia plików.Py i History_Internal.Py są wyświetlane na zrzucie ekranu, gdy pasują do określonego wzoru.

Przykład 5:

Teraz porozmawiamy o funkcji filtra modułu FNMatch. Ta metoda zwraca podzbiór listy nazw, które dokładnie pasują do podanego wzoru z podanych nazwisk. Tutaj możesz łatwo filtrować pliki nie tylko jeden, ale wiele rozszerzeń plików. Zbadaj poniższy kod.

Tutaj najpierw zaimportowaliśmy wymagane moduły i zdefiniowaliśmy wzór. Następnie wymień wszystkie pliki, które pasują do kryteriów.

Importuj fnmatch
Import OS
patrn = 'fnmatch_*.py '
Drukuj („Wzór to:”, patrn)
FILLE_NAME = OS.Listdir ('.')
drukuj („pliki są wymienione tutaj:”, nazwa_pliku)
druk („Matches Found:”, fnmatch.filtr (nazwa_pliku, patrn))

Tutaj możesz zauważyć, że wzór jest wyświetlany najpierw, a następnie pliki są pobierane i wyświetlane. Wreszcie, dopasowania są wyświetlane, jeśli znaleziono. W naszym przypadku nie znaleziono żadnego dopasowania.

Przykład 6:

Kolejny program opracowuje funkcję filtra. Tutaj tylko te pliki, których nazwy pasują do parametru wzorca, są zwracane przez tę funkcję. Spośród wszystkich plików w bieżącym katalogu, poniższa instrukcja zawiera listę plików z '.rozszerzenie txt '.

Importuj fnmatch
pliki = ['dane.txt ', „demo.txt ', „historia.py ', „History_internal.py ', „new_file.txt ', „pdb_history.sqlite ',]
Drukuj (fnmatch.filtr (pliki ”*.tekst"))

Oto nazwy plików z '.rozszerzenie txt '.

Przykład 7:

Funkcja tłumacza () modułu FNMatch została pokazana w tym przykładzie. Ta funkcja przekształca wzór w stylu skorupy w wyrażenie regularne, które można użyć z RE.mecz () (re.match () dopasowuje się tylko na początku tekstu, a nie z każdej linii). Zaimportowaliśmy moduły FNMatch i RE, jak widać w poniższym kodzie. Wzór został następnie przekształcony w wyrażenie regularne przy użyciu metody tłumacz ().

Importuj fnmatch, ponownie
reg_exp = fnmatch.Tłumaczyć('*.tekst')
re_obj = re.kompila (reg_exp)
druk (reg_exp)
Drukuj (Re_Obj.mecz („demo.tekst'))

Tutaj możesz zobaczyć dane wyjściowe powyższego programu kodu metody ().

Przykład 8:

Oto kolejny przykład tej samej funkcji omówionej powyżej. Po zaimportowaniu wymaganych modułów wykonaliśmy funkcję tłumaczenia, w której przekazaliśmy wzór, który zdefiniowaliśmy w powyższym wierszu kodu. Wartość zwracana funkcji jest następnie przekształcana w wyrażenie regularne za pomocą funkcji modułu repile (). Następnie służy do dopasowania danego wzoru.

import re
Importuj fnmatch
Import Glob
patrn = "*.tekst"
reg_exp = fnmatch.Tłumacz (patrn)
Reg_Exp
'(?S:.*\\.txt) \\ z '
res = re.kompila (reg_exp)
dla nazwy_pliku na świecie.Glob ("*.*”):
Jeśli ponownie.Match (RES, File_name):
drukuj (nazwa_pliku)

Oto wynik, kiedy wykonaliśmy powyższy program.

Wniosek:

Funkcja fnmatch () może pasować między prostą metodą łańcucha a złożonym wyrażeniem regularnym. Zazwyczaj jest to rozsądny schemat, gdy do przetwarzania danych wymagana jest tylko prosta karta wieloznaczna. Opracowaliśmy kilka przykładów, aby szczegółowo omówić ten temat.