logo

Comment utiliser la fonction Glob() pour rechercher des fichiers de manière récursive en Python ?

Glob est un terme général utilisé pour définir des techniques permettant de faire correspondre des modèles spécifiés selon les règles liées au shell Unix. Les systèmes et shells Linux et Unix prennent également en charge glob et fournissent également des fonctionsglob()>dans les bibliothèques système.

En Python, le module glob est utilisé pour récupérer fichiers/chemins d'accès correspondant à un modèle spécifié. Les règles de modèle de glob suivent les règles standard d'expansion de chemin Unix. Il est également prévu que, selon les tests, il est plus rapide que les autres méthodes de faire correspondre les noms de chemin dans les répertoires. Avec glob, on peut aussi utiliser des caractères génériques('*, ?, [ranges])>en dehors de la recherche de chaîne exacte pour rendre la récupération du chemin plus simple et plus pratique.



Note: Ce module est intégré à Python, il n'est donc pas nécessaire de l'installer en externe.

Exemple:








tableaux de programmation 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)>

>

>

Sortir :

bfs contre dfs

python-glob

Utilisation de la fonction Glob() pour rechercher des fichiers de manière récursive

On peut utiliser la fonctionglob.glob()>ouglob.iglob()>directement depuis le module glob pour récupérer les chemins de manière récursive depuis l'intérieur des répertoires/fichiers et sous-répertoires/sous-fichiers.

Syntaxe:

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

Note: Lorsque récursif est définiTrue> **>suivi d'un séparateur de chemin('./**/')>correspondra à tous les fichiers ou répertoires.

Exemple:




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

>

>

Sortir :

comparer les chaînes java

python-glob
Pour les anciennes versions de Python :
La méthode la plus simple consiste à utiliser os.walk() car il est spécifiquement conçu et optimisé pour permettre la navigation récursive dans une arborescence de répertoires. Ou nous pouvons également utiliser os.listdir() pour obtenir tous les fichiers du répertoire et des sous-répertoires, puis filtrer.

Voyons cela à travers 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))>

>

>

Sortir :

parcours de vente par correspondance
 ./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>