Programmering nivå 2

Kap 4.1 – Läsa och skriva till filer

Arbeta med filer och filformat.

Mål med lektionen

När du har arbetat klart med denna lektion ska du:

  • Kunna läsa och skriva data till textfiler med Python.
  • Förstå skillnaden mellan att skriva över, lägga till och läsa från en fil.
  • Använda filhantering för att spara programdata permanent.

Så här lär du dig bäst

Du lär dig bäst genom att följa konkreta exempel och själv skriva kod som öppnar, läser och sparar information. Arbeta stegvis och prova olika lägen för att se hur filinnehållet förändras. Testa gärna att koppla filhantering till ett tidigare projekt, som att spara en lista med recept eller spelresultat.

Centrala begrepp

  • filhantering - Teknik för att läsa och skriva data från filer.
  • open() - Funktion för att öppna en fil i olika lägen.
  • read() och write() - Metoder för att läsa och skriva text i filer.
  • fillägena r, w och a - Lägen för att läsa, skriva över eller lägga till innehåll.
  • with - Konstruktion för att säkert arbeta med filer.

Innehåll och exempel

Vad händer när ett program skriver till en fil?

Vanliga variabler finns bara medan programmet körs. Om du sparar ett namn i en variabel och avslutar programmet försvinner värdet. En fil kan däremot ligga kvar på datorn efter att programmet har avslutats. Därför används filer när program behöver spara data mellan körningar.

Funktionen open() öppnar en fil. Det andra argumentet bestämmer vad programmet får göra med filen:

  • "w" betyder write. Filen skrivs från början och gammalt innehåll tas bort.
  • "a" betyder append. Ny text läggs till sist i filen.
  • "r" betyder read. Programmet läser filen utan att skriva ny text.

with används för att Python automatiskt ska stänga filen när blocket är klart. Det är säkrare än att öppna och stänga filen manuellt, särskilt om ett fel skulle uppstå mitt i koden.

Skriva till fil

with open("exempel.txt", "w") as fil:
    fil.write("Hej filvärlden!\n")
    fil.write("Denna text skrivs till filen.")

Läget w betyder att filen skrivs över om den redan finns. fil.write(...) skriver exakt den text du skickar in. Vill du ha radbrytning behöver texten innehålla \n.

Lägga till i fil

with open("exempel.txt", "a") as fil:
    fil.write("\nEn ny rad läggs till.")

Läget a står för append - lägger till utan att ta bort tidigare innehåll.

Läsa från fil

with open("exempel.txt", "r") as fil:
    innehåll = fil.read()

print(innehåll)

Läget r står för read - läser innehållet som en hel sträng.

Interaktiv övning: simulera skrivning till fil

Testa hur filen förändras när du använder "w", "a" och "r". Övningen skriver inte till en riktig fil på datorn, utan visar hur innehållet i exempel.txt skulle ändras.

Filen exempel.txt är tom.

Programmering 2-koppling: läget "w" ersätter filens innehåll, "a" lägger till i slutet och "r" läser det som redan finns.

Öva - tillämpning i ett projekt

Koppla filhantering till något du byggt tidigare, till exempel:

def spara_recept(namn, ingredienser):
    with open("recept.txt", "a") as fil:
        fil.write(f"Recept: {namn}\n")
        for ing in ingredienser:
            fil.write(f"- {ing}\n")

Testa sedan att läsa filen:

with open("recept.txt", "r") as fil:
    print(fil.read())

Öva själv

Skapa filen kap4-1-anteckningar.py i din kursmapp. Programmet ska spara korta anteckningar i en textfil och sedan läsa upp innehållet.

  1. Skapa en konstant eller variabel med filnamnet anteckningar.txt.
  2. Skriv funktionen add_note(note) som öppnar filen med "a" och lägger till en rad.
  3. Skriv funktionen show_notes() som öppnar filen med "r" och skriver ut innehållet.
  4. Testa programmet genom att lägga till minst två anteckningar.
  5. Kör programmet flera gånger och kontrollera att anteckningarna ligger kvar i filen.

När du har försökt själv kan du ladda ner ett lösningsförslag: kap4-1-anteckningar-losningsforslag.py

Sammanfattning

  • Du kan nu öppna, läsa från och skriva till textfiler.
  • Du förstår skillnaden mellan skrivlägen (w, a, r).
  • Du kan använda filhantering för att spara programdata på ett enkelt sätt.

Tillbaka till Kapitel 4