Codice sorgente: Lib/glob.py
Il modulo glob
trova tutti i nomi di percorso che corrispondono ad un pattern specificato secondo le regole usate dalla shell Unix, sebbene i risultati siano restituiti in ordine arbitrario. Non viene fatta alcuna espansione di tilde, ma *
, ?
, e gli intervalli di caratteri espressi con saranno correttamente abbinati. Questo viene fatto usando le funzioni
os.scandir()
e fnmatch.fnmatch()
di concerto, e non invocando effettivamente un subshell. Si noti che, a differenza di fnmatch.fnmatch()
, glob
tratta i nomi di file che iniziano con un punto (.
) come casi speciali (per la tilde e l’espansione delle variabili di shell, usate os.path.expanduser()
eos.path.expandvars()
.)
Per una corrispondenza letterale, avvolgi i meta-caratteri tra parentesi; per esempio, ''
corrisponde al carattere '?'
.
Vedi anche
Il modulo pathlib
offre oggetti percorso di alto livello.
glob.
glob
(pathname, *, recursive=False)¶
Ritorna una lista possibilmente vuota di nomi di percorsi che corrispondono a pathname, che deve essere una stringa contenente una specifica di percorso. pathname può essere assoluto (come /usr/src/Python-1.5/Makefile
) o relativo (come../../Tools/*/*.gif
), e può contenere caratteri jolly stile shell. I brokensymlink sono inclusi nei risultati (come nella shell). Se i risultati sono ordinati o meno dipende dal file system. Se un file che soddisfa le condizioni viene rimosso o aggiunto durante la chiamata di questa funzione, non è specificato se il nome del percorso di quel file debba essere incluso.
Se ricorsivo è vero, lo schema “**
” corrisponderà a qualsiasi file e a zero o più directory, sottodirectory e collegamenti simbolici alle directory. Se lo schema è seguito da un os.sep
o os.altsep
allora i file non corrispondono.
Lancia un evento di auditing glob.glob
con argomenti pathname
, recursive
.
Nota
L’uso dello schema “**
” in grandi alberi di directory può richiedere una quantità di tempo eccessiva.
Cambiato nella versione 3.5: supporto per globi ricorsivi usando “**
“.
glob.
iglob
(pathname, *, recursive=False)¶
Ritorna un iteratore che produce gli stessi valori di glob()
senza memorizzarli tutti contemporaneamente.
Lancia un evento di revisione glob.glob
con argomenti pathname
, recursive
.
glob.
escape
(pathname)¶
Esclude tutti i caratteri speciali ('?'
, '*'
e '.txt'
.
Nuovo nella versione 3.4.
Per esempio, considerate una directory contenente i seguenti file:1.gif
, 2.txt
, card.gif
e una sottodirectory sub
che contiene solo il file 3.txt
. glob()
produrrà i seguenti risultati. Notate come qualsiasi componente iniziale del percorso viene conservato.
>>> import glob>>> glob.glob('./.*')>>> glob.glob('*.gif')>>> glob.glob('?.gif')>>> glob.glob('**/*.txt', recursive=True)>>> glob.glob('./**/', recursive=True)
Se la directory contiene file che iniziano con .
non saranno abbinati per default. Per esempio, considera una directory contenente card.gif
e.card.gif
:
>>> import glob>>> glob.glob('*.gif')>>> glob.glob('.c*')
Vedi anche
Modulo fnmatch
Espansione dei nomi di file (non dei percorsi) in stile shell