Glob er et generelt begrep som brukes for å definere teknikker for å matche spesifiserte mønstre i henhold til regler knyttet til Unix-skall. Linux- og Unix-systemer og skall støtter også glob og gir også funksjonglob()>i systembiblioteker.
I Python brukes glob-modulen til å hente filer/stinavn samsvarer med et spesifisert mønster. Mønsterreglene for glob følger standard Unix-baneutvidelsesregler. Det er også spådd at i henhold til benchmarks er det raskere enn andre metoder å matche stinavn i kataloger. Med glob kan vi også bruke jokertegn('*, ?, [ranges])>bortsett fra eksakt strengsøk for å gjøre stihenting enklere og praktisk.
Merk: Denne modulen kommer innebygd med Python, så det er ikke nødvendig å installere den eksternt.
Eksempel:
# 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)> |
>
>
Utgang:

Bruke Glob()-funksjonen for å finne filer rekursivt
Vi kan bruke funksjonenglob.glob()>ellerglob.iglob()>direkte fra glob-modulen for å hente stier rekursivt fra innsiden av katalogene/filene og underkatalogene/underfilene.
Syntaks:
glob.glob(pathname, *, recursive=False)>
glob.iglob(pathname, *, recursive=False)>
Merk: Når rekursiv er sattTrue> **>etterfulgt av baneskiller('./**/')>vil matche alle filer eller kataloger.
Eksempel:
hvordan oppgraderer jeg 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)> |
>
>
Utgang:
For eldre versjoner av python:
Den enkleste metoden er å bruke os.walk() siden den er spesielt designet og optimalisert for å tillate rekursiv surfing i et katalogtre. Eller vi kan også bruke os.listdir() for å få alle filene i kataloger og underkataloger og deretter filtrere ut.
La oss se det gjennom et eksempel-
Eksempel:
# 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))> |
>
>
Utgang:
./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>