logo

Kuinka käyttää Glob()-funktiota tiedostojen etsimiseen rekursiivisesti Pythonissa?

Glob on yleinen termi, jota käytetään määrittelemään tekniikoita, jotka sopivat määritettyihin kuvioihin Unix-kuoreen liittyvien sääntöjen mukaisesti. Linux- ja Unix-järjestelmät ja kuoret tukevat myös globia ja tarjoavat myös toimintojaglob()>järjestelmäkirjastoissa.

Pythonissa noutamiseen käytetään glob-moduulia tiedostot/polut vastaa tiettyä mallia. Globin mallisäännöt noudattavat tavallisia Unix-polun laajennussääntöjä. On myös ennustettu, että vertailuarvojen mukaan polkunimien täsmääminen hakemistoissa on muita menetelmiä nopeampaa. Globilla voimme myös käyttää jokerimerkkejä('*, ?, [ranges])>Tarkkaa merkkijonohakua lukuun ottamatta, jotta polun haku olisi yksinkertaisempaa ja kätevämpää.



Huomautus: Tämä moduuli on sisäänrakennettu Pythonin kanssa, joten sitä ei tarvitse asentaa ulkoisesti.

Esimerkki:








terävä kulma

# Python program to demonstrate> # glob using different wildcards> > > import> glob> > > print>(>'Named explicitly:'>)> for> name>in> glob.glob(>'/home/geeks/Desktop/gfg/data.txt'>):> >print>(name)> > # Using '*' pattern> print>(>' Named with wildcard *:'>)> for> name>in> glob.glob(>'/home/geeks/Desktop/gfg/*'>):> >print>(name)> > # Using '?' pattern> print>(>' Named with wildcard ?:'>)> for> name>in> glob.glob(>'/home/geeks/Desktop/gfg/data?.txt'>):> >print>(name)> > # Using [0-9] pattern> print>(>' Named with wildcard ranges:'>)> for> name>in> glob.glob(>'/home/geeks/Desktop/gfg/*[0-9].*'>):> >print>(name)>

>

>

Lähtö:

python-glob

Glob()-funktion käyttäminen tiedostojen etsimiseen rekursiivisesti

Voimme käyttää toimintoaglob.glob()>taiglob.iglob()>suoraan glob-moduulista hakeaksesi polut rekursiivisesti hakemistojen/tiedostojen ja alihakemistojen/alitiedostojen sisältä.

Syntaksi:

 glob.glob(pathname, *, recursive=False)>
 glob.iglob(pathname, *, recursive=False)>

Huomautus: Kun rekursiivinen on asetettuTrue> **>jota seuraa polun erotin('./**/')>vastaa kaikkia tiedostoja tai hakemistoja.

Esimerkki:




# Python program to find files> # recursively using Python> > > import> glob> > > # Returns a list of names in list files.> print>(>'Using glob.glob()'>)> files>=> glob.glob(>'/home/geeks/Desktop/gfg/**/*.txt'>,> >recursive>=> True>)> for> file> in> files:> >print>(>file>)> > > # It returns an iterator which will> # be printed simultaneously.> print>(>' Using glob.iglob()'>)> for> filename>in> glob.iglob(>'/home/geeks/Desktop/gfg/**/*.txt'>,> >recursive>=> True>):> >print>(filename)>

java-yhteys

>

>

Lähtö:

python-glob
Pythonin vanhemmat versiot:
Yksinkertaisin tapa on käyttää os.walk() koska se on erityisesti suunniteltu ja optimoitu mahdollistamaan hakemistopuun rekursiivinen selaaminen. Tai voimme myös käyttää os.listdir() saada kaikki tiedostot hakemistoon ja alihakemistoihin ja suodattaa ne pois.

Katsotaanpa sitä esimerkin kautta -
Esimerkki:




# Python program to find files> # recursively using Python> > > import> os> > # Using os.walk()> for> dirpath, dirs, files>in> os.walk(>'src'>):> >for> filename>in> files:> >fname>=> os.path.join(dirpath,filename)> >if> fname.endswith(>'.c'>):> >print>(fname)> > '''> Or> We can also use fnmatch.filter()> to filter out results.> '''> for> dirpath, dirs, files>in> os.walk(>'src'>):> >for> filename>in> fnmatch.>filter>(files,>'*.c'>):> >print>(os.path.join(dirpath, filename))> > # Using os.listdir()> path>=> 'src'> dir_list>=> os.listdir(path)> for> filename>in> fnmatch.>filter>(dir_list,>'*.c'>):> >print>(os.path.join(dirpath, filename))>

>

>

Lähtö:

 ./src/add.c ./src/subtract.c ./src/sub/mul.c ./src/sub/div.c ./src/add.c ./src/subtract.c ./src/sub/mul.c ./src/sub/div.c ./src/add.c ./src/subtract.c ./src/sub/mul.c ./src/sub/div.c>