Källkod: Lib/glob.py
Modulen glob
hittar alla sökvägar som matchar ett angivet mönster enligt de regler som används av Unix-skalet, även om resultaten returneras i en godtycklig ordning. Ingen tildeexpansion görs, men *
, ?
och teckenområden som uttrycks med matchas korrekt. Detta görs genom att använda funktionerna
os.scandir()
och fnmatch.fnmatch()
tillsammans, och inte genom att faktiskt anropa en subshell. Observera att till skillnad från fnmatch.fnmatch()
behandlar glob
filnamn som börjar med en punkt (.
) som specialfall (för tilde och expansion av skalvariabler, använd os.path.expanduser()
ochos.path.expandvars()
).)
För en bokstavsmässig matchning omsluter du metatecknen i parenteser. ''
matchar till exempel tecknet '?'
.
Se även
Modulen pathlib
erbjuder sökvägsobjekt på hög nivå.
glob.
glob
(pathname, *, recursive=False)¶
Returnerar en eventuellt tom lista med sökvägsnamn som matchar pathname, som måste vara en sträng som innehåller en sökvägsspecifikation. pathname kan vara antingen absolut (som /usr/src/Python-1.5/Makefile
) eller relativ (som../../Tools/*/*.gif
), och kan innehålla jokertecken i shell-stil. Brokensymlänkar inkluderas i resultaten (som i skalet). Huruvida resultaten är sorterade eller inte beror på filsystemet. Om en fil som uppfyller villkoren tas bort eller läggs till under anropet av den här funktionen, är det ospecificerat om sökvägsnamnet för den filen ska inkluderas.
Om rekursivt är sant kommer mönstret ”**
” att matcha alla filer och noll eller fler kataloger, underkataloger och symboliska länkar till kataloger. Om mönstret följs av ett os.sep
eller os.altsep
kommer filerna inte att matcha.
Avgerar en granskningshändelse glob.glob
med argumenten pathname
, recursive
.
Anmärkning
Användning av ”**
”-mönstret i stora katalogträd kan ta orimligt mycket tid i anspråk.
Förändras i version 3.5: Stöd för rekursiva globs som använder ”**
”.
glob.
iglob
(pathname, *, recursive=False)¶
Returnerar en iterator som ger samma värden som glob()
utan att faktiskt lagra dem alla samtidigt.
Raddar en granskningshändelse glob.glob
med argumenten pathname
, recursive
.
glob.
escape
(pathname)¶
Upphäver alla specialtecken ('?'
, '*'
och '.txt'
.
Nytt i version 3.4.
Tänk till exempel på en katalog som innehåller följande filer: 1.gif
, 2.txt
, card.gif
och en underkatalog sub
som endast innehåller filen 3.txt
. glob()
ger följande resultat. Lägg märke till att alla ledande komponenter i sökvägen bevaras.
>>> import glob>>> glob.glob('./.*')>>> glob.glob('*.gif')>>> glob.glob('?.gif')>>> glob.glob('**/*.txt', recursive=True)>>> glob.glob('./**/', recursive=True)
Om katalogen innehåller filer som börjar med .
kommer de inte att matchas som standard. Tänk till exempel på en katalog som innehåller card.gif
och.card.gif
:
>>> import glob>>> glob.glob('*.gif')>>> glob.glob('.c*')
Se även
Modul fnmatch
Expansion av filnamn (inte sökväg) i shell-stil