Tiedostokuviohaku ja iterointi
Etsi tiedostoja glob-kuvioilla
Tiedostokuviohaku ja iterointi on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
Tiedostojen etsiminen
pathlib helpottaa hakemiston sisällön luettelemista ja tiettyä kaavaa vastaavien tiedostojen etsimistä. Keskeiset metodit ovat iterdir, glob ja rglob.
Esimerkkihakemistopuun määrittäminen
Näiden metodien tutkimista varten rakennamme ensin pienen tiedostoja sisältävän hakemiston. Tässä käytetään vain vakiokirjastoa.
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 luettelee sisällön
iterdir() tuottaa jokaisen suoraan hakemiston sisältämän kohteen yksitellen. Kukin kohde on oma Path-olionsa.
from pathlib import Path
root = Path('sample')
for entry in sorted(root.iterdir()):
print(entry.name)glob ja kaava
glob() etsii komentotulkin tyylisen kaavan täyttäviä kohteita. Jokerimerkki * vastaa mitä tahansa merkkijonoa.
from pathlib import Path
root = Path('sample')
for txt in sorted(root.glob('*.txt')):
print(txt.name)Yhden merkin jokerimerkki
Jokerimerkki ? vastaa täsmälleen yhtä merkkiä, joten se sopii kiinteän pituisiin nimiin.
from pathlib import Path
root = Path('sample')
for m in sorted(root.glob('?.txt')):
print(m.name)Merkkialueet
Hakasulkeet vastaavat mitä tahansa yhtä tietyn joukon tai alueen merkkiä samaan tapaan kuin komentotulkin glob-haussa.
from pathlib import Path
root = Path('sample')
for m in sorted(root.glob('[ab].txt')):
print(m.name)Rekursiivinen glob-haku rglob-metodilla
rglob() etsii hakemistosta ja kaikista sen alihakemistoista. Se vastaa kutsua 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)Osumien laskeminen
Glob-haun tulokset ovat iteraattoreita. Muuntakaa tulos list()-funktiolla, jos haluatte laskea osumat tai käyttää niitä uudelleen.
from pathlib import Path
root = Path('sample')
txts = list(root.rglob('*.txt'))
print('found', len(txts), 'text files')Suodattaminen iteroinnin aikana
Yhdistäkää glob-haku is_file- tai is_dir-tarkistuksiin suodattaaksenne tulokset täsmällisesti.
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)Löydettyjen tiedostojen käsittely
Kun olette saaneet osumat, voitte lukea jokaisen tiedoston. Tässä laskemme yhteen hakemistopuun kaikkien tekstitiedostojen sisällöt.
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)Glob-haun tulosten lajittelu
Glob-haku ei takaa tiettyä järjestystä. Muuntakaa tulokset sorted()-funktiolla, kun tarvitsette deterministisen tulosteen, esimerkiksi raporttia luodessanne.
from pathlib import Path
root = Path('sample')
for p in sorted(root.glob('*'), key=lambda x: x.name):
print(p.name)Pikatarkistus
Mitä eroa on glob- ja rglob-metodeilla?
Kertaus
Opitte etsimään tiedostoja glob-kaavojen avulla.
iterdirluettelee hakemiston suoran sisällön.globetsii kaavaa (*,?,[...]) vastaavat kohteet.rglobetsii rekursiivisesti.- Yhdistäkää glob-haku
is_file/is_dir-suodattimiin ja lukekaa osumat.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”Tiedostokuviohaku ja iterointi” ilmainen?
Kyllä – oppitunnin ”Tiedostokuviohaku ja iterointi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tiedostokuviohaku ja iterointi”?
Etsi tiedostoja glob-kuvioilla Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Tiedostokuviohaku ja iterointi”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Path-olio
- Tiedostojen lukeminen ja kirjoittaminen
- Tiedostokuviohaku ja iterointi
- Polkujen käsittely