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