Python_Essentials_19 - itnett/FTD02H-N GitHub Wiki
Her er neste side som dekker Avanserte Feilhåndteringsstrategier og Mer Kompleks Filbehandling, optimalisert for GitHub Wiki-format, med emoji, formatering og forklaring tilpasset en norsk målgruppe uten forkunnskaper.
🚨 Avanserte Feilhåndteringsstrategier i Python
Egendefinerte Unntak 🛠️
Som Python-utvikler kan du lage dine egne unntak for å forbedre klarhet og spesifisitet i programmet ditt. Dette er nyttig når du vil fange opp spesifikke tilstander i koden som ikke dekkes av standardunntak.
💡 Eksempel:
class MinEgenFeil(Exception):
pass
def sjekk_gyldig_tall(tall):
if tall < 0:
raise MinEgenFeil("Tallet kan ikke være negativt!")
else:
print(f"{tall} er et gyldig tall.")
try:
sjekk_gyldig_tall(-5)
except MinEgenFeil as e:
print(e)
Her definerer vi vårt eget unntak, MinEgenFeil
, og bruker det til å kaste en feil når et tall er negativt.
Bruke Flere Except Blokker 🧱
Du kan håndtere flere typer feil ved å bruke flere except
-blokker. Dette er nyttig når du vil skille mellom ulike typer feil og gi spesifikke løsninger.
try:
tall = int(input("Skriv inn et tall: "))
resultat = 10 / tall
except ValueError:
print("Du må skrive inn et gyldig tall!")
except ZeroDivisionError:
print("Du kan ikke dele på null!")
Sende Feil Videre (Re-Raising Exceptions) 🔄
Noen ganger vil du fange et unntak, men også sende det videre for mer avansert behandling lenger opp i programmet.
try:
raise ValueError("Dette er en feil")
except ValueError as e:
print("Fanget en feil, men sender den videre.")
raise # Sender feilen videre til høyere nivåer
📂 Mer Kompleks Filbehandling i Python
Organisering av Filer 🗃️
En vanlig utfordring er å organisere filer i mapper basert på type (for eksempel bilder, dokumenter eller arkiver). Dette kan automatiseres ved å bruke Python.
💡 Eksempel:
import os
import shutil
mapper = {
"Bilder": [".jpeg", ".jpg", ".png"],
"Dokumenter": [".pdf", ".txt", ".docx"],
"Arkiver": [".zip", ".tar", ".rar"]
}
desktop_path = os.path.expanduser("~/Desktop")
for mappe, filtyper in mapper.items():
mappe_path = os.path.join(desktop_path, mappe)
os.makedirs(mappe_path, exist_ok=True)
for fil in os.listdir(desktop_path):
if any(fil.endswith(ft) for ft in filtyper):
shutil.move(os.path.join(desktop_path, fil), mappe_path)
Dette scriptet organiserer filer på skrivebordet ditt i mapper som "Bilder", "Dokumenter" og "Arkiver" basert på filtypen.
Håndtering av Store Filer 📑
For å håndtere store filer effektivt kan det være lurt å lese og skrive dem i biter (chunks), slik at minnet ikke overbelastes.
💡 Eksempel:
chunk_storrelse = 1024 # 1KB av gangen
with open("stor_fil.txt", "rb") as fil:
while (chunk := fil.read(chunk_storrelse)):
print(chunk) # Håndterer hver bit av gangen
Dette lar deg lese store filer i små biter, noe som er spesielt nyttig for filer på flere gigabyte.
Slette, Flytte og Kopiere Filer 🗑️📤
I Python kan du også slette, flytte og kopiere filer med innebygde moduler som os
og shutil
.
- Slette en fil:
import os
os.remove("fil_som_skal_slettes.txt")
- Flytte en fil:
import shutil
shutil.move("kilde.txt", "ny_mappe/destinasjon.txt")
- Kopiere en fil:
shutil.copy("kilde.txt", "kopi.txt")
Filattributter og Metadata 📋
Noen ganger trenger du mer informasjon om filene dine, som når de ble opprettet, eller når de sist ble endret.
💡 Eksempel på henting av filattributter:
import os
import time
fil = "eksempel.txt"
info = os.stat(fil)
print(f"Størrelse: {info.st_size} bytes")
print(f"Opprettet: {time.ctime(info.st_ctime)}")
print(f"Sist endret: {time.ctime(info.st_mtime)}")
🎯 Oppsummering
- Du kan lage egendefinerte unntak for å forbedre klarhet i programmet ditt.
- Re-raise exceptions sender feil videre til et høyere nivå for mer avansert behandling.
- Når du jobber med filer, kan du bruke os og shutil til å organisere, flytte, og slette filer.
- Store filer bør leses i biter for å unngå minneproblemer.
- Du kan også hente filattributter som størrelse og tidspunkt for siste endring.
🔗 Tilbake til forrige side: Feilhåndtering og Filbehandling | Neste side: Python Avanserte Emner →
Fortsett å eksperimentere med Python og filhåndtering, og ikke nøl med å stille spørsmål eller gjøre feil – det er slik man lærer best! 💡🐍