Cod sursă: Lib/glob.py
Modul glob
găsește toate numele de cale care se potrivesc cu un model specificatîn conformitate cu regulile folosite de shell-ul Unix, deși rezultatele sunt returnate într-o ordine arbitrară. Nu se face nici o expansiune cu tilde, dar *
, ?
și caracterele exprimate cu se vor potrivi corect. Acest lucru este realizat prin utilizarea funcțiilor
os.scandir()
și fnmatch.fnmatch()
în mod concertat, și nu prin invocarea efectivă a unui subshell. Rețineți că, spre deosebire de fnmatch.fnmatch()
,glob
tratează numele de fișiere care încep cu un punct (.
) ca pe niște cazuri speciale.(Pentru extinderea tildei și a variabilelor de shell, utilizați os.path.expanduser()
șios.path.expandvars()
.)
Pentru o potrivire literală, înfășurați metacaracterele între paranteze.De exemplu, ''
se potrivește cu caracterul '?'
.
Vezi și
Modulul pathlib
oferă obiecte de cale de nivel înalt.
glob.
glob
(pathname, *, recursive=False)¶
Întoarce o listă eventual goală de nume de căi de acces care se potrivesc cu pathname, care trebuie să fie un șir de caractere care să conțină o specificație de cale de acces. pathname poate fi fie absolută (ca /usr/src/Python-1.5/Makefile
), fie relativă (ca../../Tools/*/*.gif
), și poate conține caractere joker de tip shell. Brokensymlink-urile sunt incluse în rezultate (ca în shell). Sortarea sau nu a rezultatelor depinde de sistemul de fișiere. Dacă un fișier care îndeplinește condițiile este eliminat sau adăugat în timpul apelării acestei funcții, nu este specificat dacă numele căii de acces pentru acel fișier va fi inclus.
Dacă recursivitatea este adevărată, modelul „**
” se va potrivi cu orice fișier și zero sau mai multe directoare, subdirectoare și legături simbolice către directoare. Dacă modelul este urmat de un os.sep
sau os.altsep
, atunci fișierele nu se vor potrivi.
Răspunde la un eveniment de audit glob.glob
cu argumentele pathname
, recursive
.
Nota
Utilizarea modelului „**
” în arborele de directoare de mari dimensiuni poate consuma o cantitate exagerată de timp.
Schimbat în versiunea 3.5: Suport pentru globi recursivi folosind „**
„.
glob.
iglob
(pathname, *, recursive=False)¶
Întoarce un iterator care produce aceleași valori ca glob()
fără să le stocheze efectiv pe toate simultan.
Răspunde la un eveniment de audit glob.glob
cu argumentele pathname
, recursive
.
glob.
escape
(pathname)¶
Scoate toate caracterele speciale ('?'
, '*'
și '.txt'
.
Noi în versiunea 3.4.
De exemplu, considerați un director care conține următoarele fișiere:1.gif
, 2.txt
, card.gif
și un subdirectoriu sub
care conține doar fișierul 3.txt
. glob()
va produce următoarele rezultate. Observați cum sunt păstrate toate componentele anterioare ale căii de acces.
>>> import glob>>> glob.glob('./.*')>>> glob.glob('*.gif')>>> glob.glob('?.gif')>>> glob.glob('**/*.txt', recursive=True)>>> glob.glob('./**/', recursive=True)
Dacă directorul conține fișiere care încep cu .
, acestea nu se vor potrivi în mod implicit. De exemplu, luați în considerare un director care conține card.gif
și.card.gif
:
>>> import glob>>> glob.glob('*.gif')>>> glob.glob('.c*')
Vezi și
Modul fnmatch
Expansiune de nume de fișier (nu de cale) în stil shell
.