logo

Wie verwende ich die Funktion Glob(), um Dateien in Python rekursiv zu finden?

Glob ist ein allgemeiner Begriff, der zur Definition von Techniken verwendet wird, um bestimmte Muster gemäß den Regeln der Unix-Shell abzugleichen. Linux- und Unix-Systeme und -Shells unterstützen ebenfalls Glob und stellen ebenfalls Funktionen bereitglob()>in Systembibliotheken.

In Python wird zum Abrufen das Glob-Modul verwendet Dateien/Pfadnamen Übereinstimmung mit einem bestimmten Muster. Die Musterregeln von glob folgen den Standardregeln für die Unix-Pfaderweiterung. Es wird auch vorhergesagt, dass es laut Benchmarks schneller als andere Methoden ist, Pfadnamen in Verzeichnissen abzugleichen. Mit glob können wir auch Platzhalter verwenden('*, ?, [ranges])>Abgesehen von der Suche nach exakten Zeichenfolgen, um das Abrufen von Pfaden einfacher und bequemer zu gestalten.



Notiz: Dieses Modul ist in Python integriert, sodass keine externe Installation erforderlich ist.

Beispiel:








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

>

Rückgabe von Arrays in Java

>

Ausgabe :

Python-Glob

Verwenden der Glob()-Funktion zum rekursiven Suchen von Dateien

Wir können die Funktion verwendenglob.glob()>oderglob.iglob()>direkt vom Glob-Modul, um Pfade rekursiv aus den Verzeichnissen/Dateien und Unterverzeichnissen/Unterdateien abzurufen.

Syntax:

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

Notiz: Wenn rekursiv eingestellt istTrue> **>gefolgt von einem Pfadtrennzeichen('./**/')>stimmt mit allen Dateien oder Verzeichnissen überein.

Beispiel:




Objekt eines Arrays in Java

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

>

>

Ausgabe :

Python-Glob
Für ältere Python-Versionen:
Die einfachste Methode ist die Verwendung os.walk() da es speziell entwickelt und optimiert wurde, um das rekursive Durchsuchen eines Verzeichnisbaums zu ermöglichen. Oder wir können es auch verwenden os.listdir() um alle Dateien im Verzeichnis und in den Unterverzeichnissen abzurufen und dann herauszufiltern.

Lassen Sie es uns anhand eines Beispiels sehen:
Beispiel:




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

>

Hashset vs. Hashmap

>

Ausgabe :

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