logo

Cum se utilizează funcția Glob() pentru a găsi fișiere recursiv în Python?

Glob este un termen general folosit pentru a defini tehnicile de potrivire a modelelor specificate conform regulilor legate de shell Unix. Sistemele și shell-urile Linux și Unix acceptă, de asemenea, glob și oferă, de asemenea, funcțiiglob()>în bibliotecile de sistem.

În Python, modulul glob este folosit pentru a prelua fișiere/căi potrivirea unui model specificat. Regulile model ale glob urmează regulile standard de extindere a căilor Unix. De asemenea, se prevede că, conform benchmark-urilor, este mai rapid decât alte metode de a potrivi căile în directoare. Cu glob, putem folosi și metacaractere('*, ?, [ranges])>în afară de căutarea exactă a șirurilor pentru a face recuperarea căilor mai simplă și mai convenabilă.



Notă: Acest modul vine încorporat cu Python, deci nu este nevoie să-l instalați extern.

Exemplu:








insula java

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

>

>

Ieșire:

filme123 la

python-glob

Folosind funcția Glob() pentru a găsi fișiere recursiv

Putem folosi funcțiaglob.glob()>sauglob.iglob()>direct din modulul glob pentru a prelua căile recursiv din interiorul directoarelor/fișierelor și subdirectoarelor/subfișierelor.

Sintaxă:

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

Notă: Când recursiv este setatTrue> **>urmat de separator de cale('./**/')>va potrivi orice fișiere sau directoare.

Exemplu:




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

>

>

Ieșire:

edith mack hirsch

python-glob
Pentru versiunile mai vechi de python:
Cea mai simplă metodă este utilizarea os.walk() deoarece este special conceput și optimizat pentru a permite navigarea recursivă a unui arbore de directoare. Sau putem folosi și noi os.listdir() pentru a obține toate fișierele din director și subdirectoare și apoi filtrați.

Să vedem asta printr-un exemplu -
Exemplu:




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

>

>

Ieșire:

checkout în git
 ./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>