glob
is een algemene term die wordt gebruikt om technieken te definiëren om gespecificeerde patronen te matchen volgens regels gerelateerd aan Unix shell. Linux en Unix systemen en shells ondersteunen ook glob en bieden ook functie glob() in systeembibliotheken. In deze tutorial zullen we glob()
zoeken functie gebruik in Python programmeertaal.
om glob()
en gerelateerde functies te kunnen gebruiken, moeten we de glob
module importeren. Houd er rekening mee dat glob
module glob()
en andere gerelateerde functies bevat.
import glob
Exact String Search
We zal beginnen met een eenvoudig voorbeeld. We zullen kijken hoe je de exacte tekenreeks of bestandsnaam matcht met een absoluut pad. In dit voorbeeld zullen we bestand /home/ismail/poftut.c
weergeven . We kunnen hieronder een voorbeeld zien dat de functie een lijst retourneert die overeenkomsten bevat.
glob.glob("/home/ismail/poftut.c")
Wildcards
jokertekens zijn belangrijk voor Glob-bewerkingen. Wildcard of sterretje wordt gebruikt om nul of meer tekens overeen te komen. Jokertekens geven aan dat er een nulteken of meerdere tekens kunnen zijn waarbij een teken niet belangrijk is. In deze exmaple zullen we bestanden vergelijken die .txt
extensie hebben.
glob.glob("/home/ismail/*.txt")
aangezien we kunnen zien dat er veel .txt
bestanden die terugkeren in een Python lijst.
jokertekens met multilevel mappen
We kunnen jokertekens gebruiken om multilevel mappen op te geven. Als we een niveau lager directory ‘ s willen zoeken naar opgegeven glob, gebruiken we /*/
. In dit voorbeeld zoeken we naar .txt
bestanden in één niveau omlaag mappen in /home/ismail
. Dit wordt ook wel “glob glob” genoemd omdat we de modulenaam glob en de functie glob gebruiken die door de glob-module wordt geleverd.
glob.glob("/home/ismail/*/*.txt")
jokertekens met één teken
er is een vraagteken dat wordt gebruikt om een enkel teken te matchen. Dit kan handig zijn als we geen enkel teken voor een gegeven naam kennen. In dit voorbeeld zullen we bestanden vergelijken met bestanden file?.txt
bestand waar deze zullen overeenkomen met
- bestand.txt
- bestand1.txt
- bestand5.txt
- …
glob.glob("/home/ismail/file?.txt")
meerdere tekens
Glob ondersteunt ook alfabetische en numerieke tekens. We kunnen gebruiken om het tekenbereik te beëindigen. We kunnen zetten wat we willen matchen tussen vierkante haken. In dit voorbeeld zullen we bestanden en mappen met namen vergelijken die beginnen met
e,m,p
.
glob.glob("/home/ismail/*.tx?")
getalbereiken
in sommige gevallen willen we misschien overeenkomen met het getalbereik. We kunnen -
dash gebruiken om begin-en eindnummers op te geven. In dit voorbeeld zullen we 0 tot 9 matchen met 0-9
. In dit voorbeeld zullen we Bestand-en mapnamen matchen die getallen van 0 tot 9 bevatten.
glob.glob("/home/ismail/**")
Alfabetbereiken
We kunnen ook definieer alfabetbereiken vergelijkbaar met nummerbereiken. we zullen a-z
gebruiken voor kleine letters, waarbij A-Z voor hoofdletters. Wat als we lagere en hoofdletters in één statement moeten matchen. We kunnen a-Z gebruiken om zowel lagere als hoofdletters te matchen. In dit voorbeeld, wij zullen overeenkomen met bestanden en mappen namen die begint met de letters tussen a
en c
glob.glob("/home/ismail/*")
Terug Generator met iglob() Mehtod
over het Algemeen glob-methode is gebruikt om de lijst met bestanden voor de opgegeven patronen. Maar in sommige gevallen kan het opnemen en opslaan ervan een vervelend werk zijn. Dus iglob()
functie kan worden gebruikt om een iterator aan te maken die kan worden gebruikt om de bestandsnamen te herhalen met de next()
functie.
import glob
gen = glob.iglob("*.txt")
for item in gen:
print(item)
specifiek overslaan characters with Escape() method
escape()
functie kan worden gebruikt om bestanden over te slaan of niet een lijst te maken met bepaalde tekens. Als we bijvoorbeeld de bestanden willen overslaan die -
of _
of #
kunnen we de escape() functie gebruiken door deze karakters op te geven.
chars_skip = "-_#"
for char_skip in chars_skip:
esc_set = "*" + glob.escape(char_skip)+ "*" + ".txt"
for txt in (glob.glob(esc_set)):
print(txt)