logo

Ako použiť funkciu Glob () na rekurzívne vyhľadávanie súborov v Pythone?

Glob je všeobecný pojem, ktorý sa používa na definovanie techník na porovnávanie špecifikovaných vzorov podľa pravidiel súvisiacich s unixovým shellom. Systémy a shelly Linux a Unix tiež podporujú glob a poskytujú aj funkcieglob()>v systémových knižniciach.

V Pythone sa na načítanie používa modul glob súbory/názvy ciest zodpovedajúce určenému vzoru. Pravidlá vzoru glob sa riadia štandardnými pravidlami rozšírenia ciest Unixu. Tiež sa predpokladá, že podľa benchmarkov je rýchlejšia zhoda názvov ciest v adresároch ako iné metódy. S glob môžeme použiť aj zástupné znaky('*, ?, [ranges])>na rozdiel od presného vyhľadávania reťazcov, aby bolo vyhľadávanie cesty jednoduchšie a pohodlnejšie.



Poznámka: Tento modul sa dodáva vstavaný s Pythonom, takže ho nie je potrebné inštalovať externe.

Príklad:



menu nastavení android






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

>

>

Výkon :

java farby

python-glob

Použitie funkcie Glob() na rekurzívne vyhľadávanie súborov

Môžeme použiť funkciuglob.glob()>aleboglob.iglob()>priamo z modulu glob na rekurzívne získavanie ciest z adresárov/súborov a podadresárov/podsúborov.

Syntax:

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

Poznámka: Keď je nastavené rekurzívneTrue> **>nasleduje oddeľovač cesty('./**/')>bude zodpovedať všetkým súborom alebo adresárom.

Príklad:




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

>

čo je oracle

>

Výkon :

python-glob
Pre staršie verzie pythonu:
Najjednoduchšou metódou je použitie os.walk() pretože je špeciálne navrhnutý a optimalizovaný tak, aby umožňoval rekurzívne prehliadanie adresárového stromu. Alebo môžeme použiť aj my os.listdir() získať všetky súbory v adresári a podadresároch a potom ich odfiltrovať.

Pozrime sa na to na príklade -
Príklad:




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

>

>

Výkon :

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