Filsti og arbeidsmappe
En filsti forteller hvor en fil ligger. En relativ sti tolkes fra arbeidsmappa — der du kjører koden fra — ikke der .py-fila ligger. Derfor må datafiler ligge der koden kjøres fra, ellers får du FileNotFoundError. import følger en annen regel: den leter i mappa der skriptet ligger.
Slik kan du tenke om det
- Fra der du står, ikke fra der fila ligger En relativ sti tolkes ut fra arbeidsmappa — mappa terminalen står i når du kjører koden — ikke fra mappa .py-fila ligger i. Sjekk derfor hvor du står før du kjører, og legg hjelpefiler og datasett ved siden av koden din.
Vanlige feil
- Du tror relativ sti er fra fila, ikke fra der du kjører Du tror open("elever.csv") leter i mappa der .py-fila ligger. Men en relativ sti tolkes fra ARBEIDSMAPPA — mappa terminalen står i når du kjører koden. Står du et annet sted, finner ikke koden fila, og du får FileNotFoundError, selv om fila «ligger ved siden av» koden.
- Du tror import og open() leter på samme sted Du tror import hjelpefil og open("data.csv") finner filer etter samme regel. Men import leter i mappa der SKRIPTET ligger (og i pakkene i miljøet), mens open() med relativ sti leter i ARBEIDSMAPPA — der terminalen står. Kjører du python prosjekt/spill.py fra mappa over, virker importen av hjelpefila, men open() gir FileNotFoundError.
Øv på dette
- Herme: hvor leter koden etter fila?
- Finn feilen: FileNotFoundError
- Lage: sett opp prosjektmappa
- Lage: les en datafil med relativ sti
- Øving: sett opp en prosjektmappe
- Sjekk: hvorfor FileNotFoundError?
- Sjekk: relativ sti fra hvor?
- Lage: et feilsøkingstre for «finner ikke»-feil
- Begrepssjekk: Filer og hjelpefiler