Python Glob () funktion för att matcha sökväg, katalog, filnamn med exempel

glob är en allmän term som används för att definiera tekniker för att matcha angivna mönster enligt regler relaterade till Unix-skal. Linux-och Unix-system och skal stöder också glob och ger även funktion glob() i systembibliotek. I denna handledning kommer vi att se glob() funktionsanvändning i Python programmeringsspråk.

för att kunna använda glob() och relaterade funktioner måste vi importera modulen glob. Tänk på attglob modulen innehållerglob() och andra relaterade funktioner.

import glob
importera Globmodul

exakt sträng sök

vi börjar med ett enkelt exempel. Vi kommer att se hur man matchar exakt sträng eller filnamn med en absolut sökväg. I det här exemplet kommer vi att lista filen /home/ismail/poftut.c . Vi kan se exempel nedan att funktionen returnerar en lista som innehåller matchningar.

glob.glob("/home/ismail/poftut.c")
exakt Strängsökning

jokertecken

Jokertecken är viktigt glob operatör för glob operationer. Jokertecken eller asterisk används för att matcha noll eller fler tecken. Jokertecken angav att det kan finnas nolltecken eller flera tecken där tecken inte är viktigt. I denna exmaple kommer vi att matcha filer som har.txt förlängning.

glob.glob("/home/ismail/*.txt")
jokertecken

som vi kan se att det finns många .txt filer som returneras i en python-lista.

jokertecken med kataloger på flera nivåer

Vi kan använda jokertecken för att ange kataloger på flera nivåer. Om vi vill söka en nivå ner kataloger för specificerade glob vi kommer att använda /*/. I det här exemplet söker vi efter .txt filer i en nivå ner kataloger i /home/ismail . Detta kallas också” glob glob ” eftersom vi använder modulnamnet glob och funktionen glob som tillhandahålls av glob-modulen.

glob.glob("/home/ismail/*/*.txt")
jokertecken med flera nivåer kataloger

enstaka tecken jokertecken

det finns ett frågetecken som används för att matcha enstaka tecken. Detta kan vara användbart om vi inte känner till enstaka tecken för förnamn. I det här exemplet matchar vi filer med filer file?.txt fil där dessa matchar

  • fil.txt
  • fil1.txt
  • fil5.txt
glob.glob("/home/ismail/file?.txt")

flera tecken

Glob stöder också för alfabetiska och numeriska tecken. Vi kan använda används för att avsluta teckenintervall. Vi kan sätta vad vi vill matcha mellan hakparenteser. I det här exemplet kommer vi att matcha filer och mappar namn som startar en av e,m,p .

glob.glob("/home/ismail/*.tx?")
Teckenområden

nummerintervall

i vissa fall kanske vi vill matcha nummerintervallet. Vi kan använda - dash för att ange start-och slutnummer. I det här exemplet matchar vi 0 till 9 med 0-9. I det här exemplet matchar vi fil-och mappnamn som innehåller siffror från 0 till 9.

glob.glob("/home/ismail/**")
nummerintervall

Alfabetintervall

vi kan också definiera alfabetintervall som liknar talintervall. vi kommer att använda a-z för små bokstäver där A-Z för stora bokstäver. Vad händer om vi behöver matcha lägre och stora bokstäver i ett enda uttalande. Vi kan använda A-Z för att matcha både lägre och stora bokstäver. I det här exemplet matchar vi filer och mappnamn som börjar med bokstäver mellan a och c

glob.glob("/home/ismail/*")
alfabetintervall

returgenerator med iglob() mehtod

generellt används glob-metoden för att lista filer för de angivna mönstren. Men i vissa fall kan lista och lagra dem vara ett tråkigt arbete. Såiglob() funktionen kan användas för att skapa en iterator som kan användas för att iterera filnamnen mednext() funktionen.

import glob
gen = glob.iglob("*.txt")
for item in gen:
print(item)
Returgenerator med iglob() Mehtod

hoppa över specifika tecken med Escape () – metoden

escape() funktionen kan användas för att hoppa över eller inte lista några filer som Namnen har specificerar tecken. Om vi till exempel vill hoppa över filerna innehåller dessa namn - eller _ eller # kan vi använda escape () – funktionen genom att tillhandahålla dessa tecken.

chars_skip = "-_#"
for char_skip in chars_skip:
esc_set = "*" + glob.escape(char_skip)+ "*" + ".txt"
for txt in (glob.glob(esc_set)):
print(txt)

Lämna ett svar

Din e-postadress kommer inte publiceras.