logo

Hoe gebruik je de Glob()-functie om bestanden recursief te vinden in Python?

Glob is een algemene term die wordt gebruikt om technieken te definiƫren om gespecificeerde patronen te matchen volgens regels die verband houden met Unix-shell. Linux- en Unix-systemen en shells ondersteunen ook glob en bieden ook functionaliteitglob()>in systeembibliotheken.

In Python wordt de glob-module gebruikt om op te halen bestanden/padnamen overeenkomen met een bepaald patroon. De patroonregels van glob volgen de standaard Unix-paduitbreidingsregels. Er wordt ook voorspeld dat het volgens benchmarks sneller is dan andere methoden om padnamen in mappen te matchen. Met glob kunnen we ook jokertekens gebruiken('*, ?, [ranges])>afgezien van het zoeken naar exacte tekenreeksen om het ophalen van paden eenvoudiger en handiger te maken.



Opmerking: Deze module wordt ingebouwd in Python, dus het is niet nodig om deze extern te installeren.

Voorbeeld:








css tekst onderstrepen

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

>

>

Uitgang:

python-glob

objectklasse in Java

De functie Glob() gebruiken om bestanden recursief te vinden

We kunnen de functie gebruikenglob.glob()>ofglob.iglob()>rechtstreeks vanuit de glob-module om paden recursief op te halen uit de mappen/bestanden en submappen/subbestanden.

Syntaxis:

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

Opmerking: Wanneer recursief is ingesteldTrue> **>gevolgd door een padscheidingsteken('./**/')>komt overeen met alle bestanden of mappen.

Voorbeeld:


0,0625 als breuk



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

>

>

Uitgang:

python-glob
Voor oudere versies van Python:
De meest eenvoudige methode is om te gebruiken os.walk() omdat het specifiek is ontworpen en geoptimaliseerd om recursief bladeren door een directorystructuur mogelijk te maken. Of we kunnen het ook gebruiken os.listdir() om alle bestanden in de map en submappen op te halen en er vervolgens uit te filteren.

hritik roshan-leeftijd

Laten we het zien aan de hand van een voorbeeld-
Voorbeeld:

java lang naar string




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

>

>

Uitgang:

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