glob
jest ogólnym terminem używanym do definiowania technik dopasowywania określonych wzorców zgodnie z regułami związanymi z powłoką uniksową. Systemy Linux i Unix oraz powłoki również obsługują glob, a także dostarczają funkcję glob () w bibliotekach systemowych. W tym samouczku będziemy szukaćglob()
wykorzystanie funkcji w języku programowania Python.
aby użyćglob()
I powiązanych funkcji, musimy zaimportować modułglob
. Należy pamiętać, żeglob
moduł zawieraglob()
I inne powiązane funkcje.
import glob
dokładny ciąg znaków Szukaj
zaczniemy od prostego przykładu. Sprawdzimy, jak dopasować dokładny ciąg znaków lub nazwę pliku ze ścieżką absolutną. W tym przykładzie wylistujemy plik /home/ismail/poftut.c
. Poniżej widzimy przykład, że funkcja zwraca listę zawierającą dopasowania.
glob.glob("/home/ismail/poftut.c")
symbole wieloznaczne
symbole wieloznaczne są ważnym operatorem Glob dla operacji glob. Symbol wieloznaczny lub Gwiazdka jest używany do dopasowania zera lub więcej znaków. Wildcard określa, że może być znak zerowy lub wiele znaków, gdzie znak nie jest ważny. W tym exmaple dopasujemy pliki, które mają.txt
rozszerzenie.
glob.glob("/home/ismail/*.txt")
Jak możemy zobacz, że istnieje wiele plików .txt
, które zwracają się na liście Pythona.
wieloznaczne z wielopoziomowymi katalogami
możemy używać wieloznacznych kart w celu określenia wielopoziomowych katalogów. Jeśli chcemy przeszukać katalogi o jeden poziom niżej pod kątem określonego globu, użyjemy /*/
. W tym przykładzie szukamy .txt
plików w katalogach o jednym poziomie niżej w /home/ismail
. Jest to również nazywane „glob glob”, ponieważ używamy nazwy modułu glob i funkcji glob, która jest dostarczana przez moduł glob.
glob.glob("/home/ismail/*/*.txt")
pojedynczy znak wieloznaczny
istnieje znak zapytania, który jest używany do dopasowania pojedynczego znaku. Może to być użyteczne, jeśli nie znamy pojedynczego znaku dla danej nazwy. W tym przykładzie dopasujemy pliki do plików file?.txt
, gdzie będą pasowały do pliku
- .txt
- file1.txt
- file5.txt
- …
glob.glob("/home/ismail/file?.txt")
wiele znaków
Glob obsługuje również znaki alfabetyczne i numeryczne. Możemy użyć jest używany do zakończenia zakresu znaków. Możemy umieścić to, co chcemy dopasować między nawiasami kwadratowymi. W tym przykładzie dopasujemy nazwy plików i folderów, które rozpoczynają się od
e,m,p
.
glob.glob("/home/ismail/*.tx?")
zakresy liczb
w niektórych przypadkach możemy chcieć dopasować zakres liczb. Możemy użyć-
dash, aby określić numery początku i końca. W tym przykładzie dopasujemy 0 do 9 z 0-9
. W tym przykładzie dopasujemy nazwy plików i folderów, które zawierają liczby od 0 do 9.
glob.glob("/home/ismail/**")
zakresy alfabetu
możemy również zdefiniować zakresy alfabetu podobne do zakresów liczb. użyjemy a-z
dla małych liter, gdzie A-Z dla wielkich liter. Co zrobić, jeśli musimy dopasować małe i wielkie litery w jednym poleceniu. Możemy użyć a-Z, aby dopasować zarówno małe, jak i duże litery. W tym przykładzie dopasujemy nazwy plików i folderów, które zaczynają się od liter między a
I c
glob.glob("/home/ismail/*")
generator powrotny z iglob() mehtod
ogólnie metoda glob jest używana do wyświetlania plików dla określonych wzorców. Ale w niektórych przypadkach ich wymienianie i przechowywanie może być żmudną pracą. Tak więciglob()
może być użyta do utworzenia iteratora, który może być użyty do iterowania nazw plików za pomocą funkcjinext()
.
import glob
gen = glob.iglob("*.txt")
for item in gen:
print(item)
pomiń określone znaki za pomocą metody Escape ()
escape()
funkcja może być używana do pomijania lub nie wyświetlania niektórych plików, których nazwy mają określone znaki. Na przykład, jeśli chcemy pominąć pliki, których nazwy zawierają -
lub _
lub #
, możemy użyć funkcji escape (), podając te znaki.
chars_skip = "-_#"
for char_skip in chars_skip:
esc_set = "*" + glob.escape(char_skip)+ "*" + ".txt"
for txt in (glob.glob(esc_set)):
print(txt)