Python Academy · leksjon

Globbing og iterasjon

Finn filer med glob-mønstre

Leksjon 3 av 413 trinn

Globbing og iterasjon er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Finne filer

pathlib gjør det enkelt å liste innholdet i mapper og søke etter filer som samsvarer med et mønster. De viktigste metodene er iterdir, glob og rglob.

Sette opp et eksempel på en mappestruktur

For å utforske disse metodene bygger vi først en liten mappe med filer. Dette oppsettet bruker bare standardbiblioteket.

from pathlib import Path

root = Path('sample')
root.mkdir(exist_ok=True)
(root / 'a.txt').write_text('1')
(root / 'b.txt').write_text('2')
(root / 'c.log').write_text('3')
print('created files')

iterdir lister innhold

iterdir() gir hvert element direkte i en mappe, ett Path-objekt per element.

from pathlib import Path

root = Path('sample')
for entry in sorted(root.iterdir()):
    print(entry.name)

glob med et mønster

glob() finner elementer som samsvarer med et shell-mønster. Jokertegnet * samsvarer med en vilkårlig sekvens av tegn.

from pathlib import Path

root = Path('sample')
for txt in sorted(root.glob('*.txt')):
    print(txt.name)

Jokertegn for ett tegn

Jokertegnet ? samsvarer med nøyaktig ett tegn og er nyttig for navn med fast lengde.

from pathlib import Path

root = Path('sample')
for m in sorted(root.glob('?.txt')):
    print(m.name)

Tegnintervaller

Hakeparenteser samsvarer med ett hvilket som helst tegn fra et sett eller et intervall, på samme måte som i shell-globbing.

from pathlib import Path

root = Path('sample')
for m in sorted(root.glob('[ab].txt')):
    print(m.name)

Rekursiv glob med rglob

rglob() søker i en mappe og alle undermappene. Det tilsvarer glob('**/pattern').

from pathlib import Path

root = Path('sample')
(root / 'nested').mkdir(exist_ok=True)
(root / 'nested' / 'deep.txt').write_text('x')
for m in sorted(root.rglob('*.txt')):
    print(m)

Telle treff

Resultatene fra glob er iteratorer. Pakk en av dem inn i list() for å telle eller bruke treffene på nytt.

from pathlib import Path

root = Path('sample')
txts = list(root.rglob('*.txt'))
print('found', len(txts), 'text files')

Filtrere under iterering

Kombiner globbing med kontrollene is_file eller is_dir for å filtrere resultatene nøyaktig.

from pathlib import Path

root = Path('sample')
files = [p for p in root.iterdir() if p.is_file()]
for f in sorted(files):
    print(f.name)

Behandle filer som er funnet

Når De har treffene, kan De lese hver fil. Her summerer vi innholdet i alle tekstfilene i mappestrukturen.

from pathlib import Path

root = Path('sample')
total = 0
for p in root.rglob('*.txt'):
    text = p.read_text().strip()
    if text.isdigit():
        total += int(text)
print('total:', total)

Sortere glob-resultater

Glob garanterer ikke en bestemt rekkefølge. Pakk resultatene inn i sorted() når De trenger et forutsigbart resultat, for eksempel når De lager en rapport.

from pathlib import Path

root = Path('sample')
for p in sorted(root.glob('*'), key=lambda x: x.name):
    print(p.name)

Rask kontroll

Hva er forskjellen mellom glob og rglob?

Oppsummering

De har lært å finne filer med glob-mønstre.

  • iterdir lister direkte innhold.
  • glob finner treff for et mønster (*, ?, [...]).
  • rglob søker rekursivt.
  • Kombiner globbing med filtrering ved hjelp av is_file/is_dir, og les treffene.
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Globbing og iterasjon» gratis?

Ja – hele teksten i «Globbing og iterasjon» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Globbing og iterasjon»?

Finn filer med glob-mønstre Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Globbing og iterasjon»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Path-objektet
  2. Lese og skrive filer
  3. Globbing og iterasjon
  4. Manipulering av stier
← Tilbake til Python Academy