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