Glob és un terme general que s'utilitza per definir tècniques per fer coincidir patrons especificats segons regles relacionades amb l'intèrpret d'ordres Unix. Els sistemes i shells Linux i Unix també admeten glob i també proporcionen funcióglob()>
a les biblioteques del sistema.
A Python, el mòdul glob s'utilitza per recuperar fitxers/noms de ruta coincidint amb un patró especificat. Les regles de patró de glob segueixen les regles estàndard d'expansió de camins Unix. També es preveu que, segons els punts de referència, és més ràpid que altres mètodes per fer coincidir els noms de ruta als directoris. Amb glob, també podem utilitzar comodins('*, ?, [ranges])>
a part de la cerca exacta de cadenes per fer que la recuperació del camí sigui més senzilla i còmoda.
Nota: Aquest mòdul ve integrat amb Python, de manera que no cal instal·lar-lo externament.
Exemple:
# 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)> |
>
>
Sortida:
Utilitzant la funció Glob() per trobar fitxers de forma recursiva
Podem utilitzar la funcióglob.glob()>
oglob.iglob()>
directament des del mòdul glob per recuperar camins recursivament des de dins dels directoris/fitxers i subdirectoris/subfitxers.
Sintaxi:
glob.glob(pathname, *, recursive=False)>
glob.iglob(pathname, *, recursive=False)>
Nota: Quan s'estableix recursiuTrue>
**>
seguit d'un separador de camins('./**/')>
coincidirà amb qualsevol fitxer o directori.
Exemple:
gimp guarda com a jpeg
# 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)> |
arbre binari de travessa per correu
>
>
Sortida:
Per a versions anteriors de Python:
El mètode més senzill és utilitzar os.walk() ja que està dissenyat i optimitzat específicament per permetre la navegació recursiva d'un arbre de directoris. O també podem utilitzar os.listdir() per obtenir tots els fitxers del directori i subdirectoris i després filtrar-los.
Vegem-ho a través d'un exemple-
Exemple:
# 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))> |
>
>
Sortida:
./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>