Kildekode: Lib/glob.py
Modulet glob
finder alle de pathnames, der matcher et angivet mønster i overensstemmelse med de regler, der anvendes af Unix-shell’en, selv om resultaterne returneres i vilkårlig rækkefølge. Der foretages ingen tildeudvidelse, men *
, ?
og tegnområder udtrykt med vil blive matchet korrekt. Dette gøres ved at bruge funktionerne
os.scandir()
og fnmatch.fnmatch()
i fællesskab og ikke ved faktisk at påkalde en subshell. Bemærk, at i modsætning til fnmatch.fnmatch()
behandler glob
filnavne, der begynder med et punktum (.
), som særtilfælde (for tilde- og shell-variabeludvidelse skal du bruge os.path.expanduser()
ogos.path.expandvars()
).)
For et bogstaveligt match skal du indpakke meta-tegnene i parenteser. ''
matcher f.eks. tegnet '?'
.
Se også
Modulet pathlib
tilbyder stiobjekter på højt niveau.
glob.
glob
(pathname, *, recursive=False)¶
Returnerer en muligvis tom liste af stinavne, der matcher pathname, som skal være en streng, der indeholder en stispecifikation. pathname kan enten være absolut (som /usr/src/Python-1.5/Makefile
) eller relativ (som../../Tools/*/*.gif
) og kan indeholde shell-lignende jokertegn. Brokensymlinks er inkluderet i resultaterne (som i skallen). Om resultaterne er sorteret eller ej afhænger af filsystemet. Hvis en fil, der opfylder betingelserne, fjernes eller tilføjes under kald af denne funktion, er det ikke specificeret, om et stinavn for den pågældende fil skal medtages.
Hvis rekursiv er sandt, vil mønsteret “**
” matche alle filer og nul eller flere mapper, undermapper og symbolske links til mapper. Hvis mønsteret efterfølges af et os.sep
eller os.altsep
, vil filer ikke matche.
Afstedkommer en revisionshændelse glob.glob
med argumenterne pathname
, recursive
.
Note
Anvendelse af mønsteret “**
” i store mappetræer kan tage uforholdsmæssig lang tid.
Ændret i version 3.5: Understøttelse af rekursive globs ved hjælp af “**
“.
glob.
iglob
(pathname, *, recursive=False)¶
Returnerer en iterator, der giver de samme værdier som glob()
uden faktisk at lagre dem alle samtidig.
Fremkalder en revisionsbegivenhed glob.glob
med argumenterne pathname
, recursive
.
glob.
escape
(pathname)¶
Fremkalder alle specialtegn ('?'
, '*'
og '.txt'
.
Nyt i version 3.4.
Tænk f.eks. på en mappe, der indeholder følgende filer: 1.gif
, 2.txt
, card.gif
og en undermappe sub
, som kun indeholder filen 3.txt
. glob()
vil give følgende resultater. Bemærk, hvordan eventuelle ledende komponenter i stien bevares.
>>> import glob>>> glob.glob('./.*')>>> glob.glob('*.gif')>>> glob.glob('?.gif')>>> glob.glob('**/*.txt', recursive=True)>>> glob.glob('./**/', recursive=True)
Hvis mappen indeholder filer, der starter med .
, vil de ikke blive matchet som standard. Overvej f.eks. en mappe, der indeholder card.gif
og.card.gif
:
>>> import glob>>> glob.glob('*.gif')>>> glob.glob('.c*')
Se også
Modul fnmatch
Shell-style filnavn (ikke sti) ekspansion