glob
on yleinen termi, jota käytetään määriteltyjen kuvioiden sovittamiseen Unix Shelliin liittyvien sääntöjen mukaisesti. Linux-ja Unix-järjestelmät ja kuoret tukevat myös globia ja tarjoavat myös funktio globia() järjestelmäkirjastoissa. Tässä opetusohjelmassa tarkastellaan glob()
funktion käyttöä Python-ohjelmointikielellä.
käyttääksemme glob()
ja siihen liittyviä funktioita meidän on tuotava glob
moduuli. Muista, että glob
moduuli sisältää glob()
ja muita siihen liittyviä funktioita.
import glob
tarkka merkkijono haku
aloitamme yksinkertaisella esimerkillä. Katsomme, miten täsmää tarkka merkkijono tai tiedoston nimi absoluuttinen polku. Tässä esimerkissä listataan tiedosto /home/ismail/poftut.c
. Voimme nähdä esimerkin alla, että funktio palauttaa luettelon, joka sisältää ottelut.
glob.glob("/home/ismail/poftut.c")
yleismerkit
yleismerkki on tärkeä yleismerkki globin toiminnalle. Jokerimerkkiä tai asteriskia käytetään vastaamaan nollaa tai useampaa merkkiä. Jokerimerkki määritteli, että voi olla nolla merkkiä tai useita merkkejä, joissa merkillä ei ole merkitystä. Tässä exmaplessa vertaamme tiedostoja, joilla on .txt
laajennus.
glob.glob("/home/ismail/*.txt")
kuten voimme katso, että on paljon .txt
tiedostoja, jotka palaavat python-luettelossa.
yleismerkit Monitasohakemistoilla
Voimme käyttää yleismerkkejä monitasohakemistojen määrittämiseen. Jos haluamme etsiä yhden tason alempia hakemistoja määritellylle globille, käytämme /*/
. Tässä esimerkissä etsitään .txt
tiedostoja yhden tason alahakemistoista /home/ismail
. Tätä kutsutaan myös nimellä ”glob glob”, koska käytämme moduulin nimeä glob ja funktiota glob, joka on glob-moduulin tarjoama.
glob.glob("/home/ismail/*/*.txt")
H2>yksimerkkinen jokerimerkki
on kysymysmerkki, jota käytetään vastaamaan yhtä merkkiä. Tämä voi olla hyödyllistä, jos emme tiedä yhden merkin etunimi. Tässä esimerkissä yhdistämme tiedostot tiedostoilla file?.txt
tiedosto, jossa nämä täsmäävät
- tiedostoon.txt
- tiedosto1.txt
- tiedosto5.txt
- …
glob.glob("/home/ismail/file?.txt")
useita merkkejä
Glob tukee myös aakkosellisia ja numeerisia merkkejä. Merkistöalueen päättämiseen voidaan käyttää . Voimme laittaa hakasulkeiden väliin mitä haluamme. Tässä esimerkissä vertaamme tiedostojen ja kansioiden nimiä niihin, jotka aloittavat yhden
e,m,p
.
glob.glob("/home/ismail/*.tx?")
lukualueet
joissakin tapauksissa saatetaan haluta sopia lukualueelle. -
dash määrittää alku-ja loppunumerot. Tässä esimerkissä vastaamme 0-9 kanssa 0-9
. Tässä esimerkissä täsmäämme tiedostojen ja kansioiden nimiä, jotka sisältävät numeroita 0: sta 9: ään.
glob.glob("/home/ismail/**")
Aakkostoalueet
voidaan määritellä myös lukualueita muistuttavat aakkostoalueet. käytämme a-z
pienille merkeille, joissa A-Z isoille merkeille. Mitä jos meidän täytyy sovittaa yhteen pieniä ja isoja merkkejä yhdessä lauseessa. Voimme käyttää a-Z: tä vastaamaan sekä pieniä että isoja kirjaimia. Tässä esimerkissä vertaamme tiedostojen ja kansioiden nimiä, jotka alkavat kirjaimilla välillä a
ja c
glob.glob("/home/ismail/*")
paluugeneraattori iglobilla() mehtod
yleensä glob-menetelmää käytetään luetteloimaan tiedostoja määritetyille kuvioille. Mutta joissakin tapauksissa niiden luettelointi ja tallentaminen voi olla työlästä työtä. Niinpä iglob()
funktion avulla voidaan luoda iteraattori, jolla voidaan iteroida tiedostonimet next()
funktio.
import glob
gen = glob.iglob("*.txt")
for item in gen:
print(item)
ohita tietyt merkit Escape () – menetelmällä
escape()
funktiolla voidaan ohittaa tai jättää listaamatta joitakin tiedostoja, joiden nimillä on määritellyt merkit. Esimerkiksi jos haluamme ohittaa tiedostot, nämä nimet sisältävät -
tai _
tai #
Voimme käyttää escape () – funktiota antamalla nämä merkit.
chars_skip = "-_#"
for char_skip in chars_skip:
esc_set = "*" + glob.escape(char_skip)+ "*" + ".txt"
for txt in (glob.glob(esc_set)):
print(txt)