logo

Kako uporabiti funkcijo Glob() za rekurzivno iskanje datotek v Pythonu?

Glob je splošen izraz, ki se uporablja za definiranje tehnik za ujemanje določenih vzorcev v skladu s pravili, povezanimi z lupino Unix. Sistemi in lupine Linux in Unix prav tako podpirajo glob in prav tako zagotavljajo funkcijoglob()>v sistemskih knjižnicah.

V Pythonu se za pridobivanje uporablja modul glob datoteke/imena poti ujemanje z določenim vzorcem. Pravila vzorca glob sledijo standardnim pravilom za razširitev poti Unix. Predvideva se tudi, da je glede na merila uspešnosti hitrejši od drugih metod za ujemanje imen poti v imenikih. Z glob lahko uporabimo tudi nadomestne znake('*, ?, [ranges])>razen natančnega iskanja po nizu, da bo iskanje poti preprostejše in priročnejše.



imessage igre za android

Opomba: Ta modul je vgrajen v Python, zato ga ni treba namestiti zunaj.

primer:








# 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)>

>

>

Izhod:

python-glob

Uporaba funkcije Glob() za rekurzivno iskanje datotek

Uporabimo lahko funkcijoglob.glob()>ozglob.iglob()>neposredno iz modula glob za rekurzivno pridobivanje poti znotraj imenikov/datotek in podimenikov/poddatotek.

Sintaksa:

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

Opomba: Ko je nastavljeno rekurzivnoTrue> **>sledi ločilo poti('./**/')>se bo ujemal s katero koli datoteko ali imenikom.

primer:




# 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)>

vaja programskega jezika java

>

>

Izhod:

python-glob
Za starejše različice pythona:
Najbolj preprosta metoda je uporaba os.walk() saj je posebej zasnovan in optimiziran za omogočanje rekurzivnega brskanja po drevesu imenikov. Lahko pa tudi uporabimo os.listdir() da dobite vse datoteke v imeniku in podimenikih in jih nato filtrirate.

Poglejmo si to skozi primer -
primer:




# 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))>

>

>

Izhod:

 ./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>