Glob er et generelt udtryk, der bruges til at definere teknikker til at matche specificerede mønstre i henhold til regler relateret til Unix-skal. Linux- og Unix-systemer og -skaller understøtter også glob og giver også funktionglob()>i systembiblioteker.
I Python bruges glob-modulet til at hente filer/stinavne matcher et specificeret mønster. Mønsterreglerne for glob følger standard Unix-stiudvidelsesregler. Det forudsiges også, at det ifølge benchmarks er hurtigere end andre metoder at matche stinavne i mapper. Med glob kan vi også bruge jokertegn('*, ?, [ranges])>bortset fra nøjagtig strengsøgning for at gøre stihentning mere enkel og bekvem.
Bemærk: Dette modul kommer indbygget med Python, så det er ikke nødvendigt at installere det 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)> |
>
>
Output:

Brug af Glob()-funktionen til at finde filer rekursivt
Vi kan bruge funktionenglob.glob()>ellerglob.iglob()>direkte fra glob-modulet for at hente stier rekursivt inde fra mapperne/filerne og undermapper/underfiler.
Syntaks:
glob.glob(pathname, *, recursive=False)>
glob.iglob(pathname, *, recursive=False)>
Bemærk: Når rekursiv er indstilletTrue> **>efterfulgt af sti-separator('./**/')>vil matche alle filer eller mapper.
Eksempel:
java læsning csv
# 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)> |
>
>
Output:
For ældre versioner af python:
Den mest enkle metode er at bruge os.walk() da det er specifikt designet og optimeret til at tillade rekursiv browsing af et bibliotekstræ. Eller vi kan også bruge os.listdir() for at få alle filerne i mappe og undermapper og derefter filtrere fra.
Lad os se det gennem 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))> |
>
>
Output:
./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>