Python Glob() Function to Match Path, Directory, File Names with Examples

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
Importuj moduł 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")
dokładne wyszukiwanie ciągu znaków

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")
Wildcards

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")
wieloznaczne karty z wielopoziomowymi katalogami

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 znaków

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 liczb

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/*")
zakresy alfabetu

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)
Generator powrotny z iglob() Mehtod

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)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.