Broncode: Lib/glob.py
De glob
module vindt alle padnamen die overeenkomen met een opgegeven patroon volgens de regels die door de Unix shell worden gebruikt, hoewel de resultaten in willekeurige volgorde worden geretourneerd. Er wordt geen tilde-expansie gedaan, maar *
, ?
, en karakterranges uitgedrukt met zullen correct worden gematched. Dit wordt gedaan door de functies
os.scandir()
en fnmatch.fnmatch()
samen te gebruiken, en niet door daadwerkelijk een subshell aan te roepen. Merk op dat in tegenstelling tot fnmatch.fnmatch()
, glob
bestandsnamen beginnend met een punt (.
) als speciale gevallen behandelt. (Voor tilde en shell variabele uitbreiding, gebruik os.path.expanduser()
enos.path.expandvars()
.)
Voor een letterlijke overeenkomst, wikkel de meta-karakters tussen haakjes. Bijvoorbeeld, ''
komt overeen met het karakter '?'
.
Zie ook
De pathlib
module biedt high-level pad objecten.
glob.
glob
(pathname, *, recursive=False)¶
Retourneer een mogelijk lege lijst van padnamen die overeenkomen met pathname, die een string moet zijn die een path specificatie bevat. pathname kan zowel absoluut (zoals /usr/src/Python-1.5/Makefile
) als relatief (zoals../../Tools/*/*.gif
) zijn, en kan shell-stijl jokertekens bevatten. Brokensymlinks worden in de resultaten opgenomen (zoals in de shell). Of de resultaten al dan niet gesorteerd zijn, hangt af van het bestandssysteem. Als een bestand dat aan de voorwaarden voldoet wordt verwijderd of toegevoegd tijdens de aanroep van deze functie, wordt niet gespecificeerd of de padnaam voor dat bestand wordt opgenomen.
Als recursief waar is, komt het patroon “**
” overeen met alle bestanden en met nul of meer directories, submappen en symbolische koppelingen naar directories. Als het patroon wordt gevolgd door een os.sep
of os.altsep
dan zullen bestanden niet overeenkomen.
Oproept een controle-gebeurtenis glob.glob
op met argumenten pathname
, recursive
.
Note
Het gebruik van het “**
” patroon in grote mapstructuren kan een buitensporige hoeveelheid tijd in beslag nemen.
Veranderd in versie 3.5: ondersteuning voor recursieve globs met “**
“.
glob.
iglob
(padnaam, *, recursive=False)¶
Retourneert een iterator die dezelfde waarden oplevert als glob()
zonder ze daadwerkelijk allemaal tegelijk op te slaan.
Roepen een controlegebeurtenis glob.glob
op met als argumenten pathname
, recursive
.
glob.
escape
(padnaam)¶
Esceneren alle speciale tekens ('?'
, '*'
en '.txt'
.
Nieuw in versie 3.4.
Bedenk bijvoorbeeld een directory met de volgende bestanden:1.gif
, 2.txt
, card.gif
en een subdirectory sub
die alleen het bestand 3.txt
bevat. glob()
zal het volgende resultaat opleveren. Merk op hoe alle leidende componenten van het pad worden behouden.
>>> import glob>>> glob.glob('./.*')>>> glob.glob('*.gif')>>> glob.glob('?.gif')>>> glob.glob('**/*.txt', recursive=True)>>> glob.glob('./**/', recursive=True)
Als de directory bestanden bevat die beginnen met .
, zullen deze standaard niet worden gevonden. Neem bijvoorbeeld een directory die card.gif
en.card.gif
bevat:
>>> import glob>>> glob.glob('*.gif')>>> glob.glob('.c*')
Zie ook
Module fnmatch
Shell-stijl bestandsnaam (niet pad) uitbreiding