Information
I den här lektionen kommer du att lära dig om hur du kan spara data till en fil och även läsa den data som finns i olika filer.
Hur laddar man in en fil i sitt Python - projekt?
Det är enkelt att ladda in en fil i ditt projekt, men du måste tänka på att filen behöver skapas innan du importerar den. Vi kan göra detta antingen manuellt eller automatiskt genom att köra koden här under. Byt ut "filnamn" och "variabelnamn" mot namnet på filen och namnet på variabeln som alltid ska användas inom programmet när du använder denna fil.
Denna kod skapar en fil i Python:
Du kan nu ta bort koden i ditt program så länge. Vi kommer strax att jobba med en nästan likadan kod som den du ser ovan. Om du tittar bland dina projektfiler till vänster i PyCharm vore du nu se detta:
Det betyder att filen har skapats. Fortsätt att läsa för att lära dig mer om hur du kan skriva och läsa data från filer i Python.
Hur använder man sina filer i Python?
När du väl skapat filen så kan du nu välja mellan olika "lägen" som du ska öppna filen i. De lägena påverkar vad Python kan göra med filen. Här är alla lägena:
w - Detta läge används när du enbart vill skriva data. Du kan även skapa en helt ny fil med detta kommando.
r - Detta läge används när du enbart vill läsa filens data.
r+ - Detta läge är riktigt bra och tillåter Python att både läsa och skriva data till en fil. Läget är helt enkelt en kombination mellan "w" och "r".
a - Ett läge som automatiskt lägger till data i slutet av filen.
Men vart någonstans skriver du då in lägena? Jo, bokstaven som du ser i början av varje rad skrivs in efter att du skrivit in filnamnet. Här är en bild som förklarar det hela:
w - Detta läge används när du enbart vill skriva data. Du kan även skapa en helt ny fil med detta kommando.
r - Detta läge används när du enbart vill läsa filens data.
r+ - Detta läge är riktigt bra och tillåter Python att både läsa och skriva data till en fil. Läget är helt enkelt en kombination mellan "w" och "r".
a - Ett läge som automatiskt lägger till data i slutet av filen.
Men vart någonstans skriver du då in lägena? Jo, bokstaven som du ser i början av varje rad skrivs in efter att du skrivit in filnamnet. Här är en bild som förklarar det hela:
Du kan även kopiera koden här nedanför och byta ut texten "mode" mot läget filen ska öppnas i.
Byt ut "mode" i denna kod mot namnet på det läge som filen ska öppnas i.
Skriv data till en fil:
Kom ihåg: Du kan normalt inte använda dig av å,ä eller ö när du skriver data till en fil. Om du vill göra detta måste du använda dig av denna kod. Byt ut "filnamn.txt" mot filens namn och "mode" mot läget du ska öppna filen i.
Vi fick denna information från Stackoverflow, en hemsida med olika svar till programmeringsfrågor. Användaren "jfs" och flera andra användares svar använde vi oss av för att ta reda på det här. Här hittar du en hel sida med lösningar på detta problem. Dock har vi ingen kontroll över denna sida eller dess innehåll.
Denna kod gör så att du kan skriva ut å,ä och ö i en fil:
Detta kommer att spara filen i en variabel som heter "variabelnamn", men detta är avancerat, så öppna filen som vanligt men använd dig inte av å,ä eller ö om du inte förstår koden.
Okej, nu ska vi lära oss att skriva data till filen, och det är inte svårt alls. Använd dig bara av denna kod:
Denna kod skriver data till en fil:
Viktigt: Om du använder metoden "with io" för att kunna skriva å,ä och ö till filen så måste allt du gör som handlar om filen vara "intabbat" i "with"-loopen, annars kommer filen att stängas innan automatiskt av io innan du ska använda den. Koden måste alltså vara skriven så här:
Om du inte använder dig av "with io" för att öppna filen, strunta i detta och skriv all kod som vanligt istället.
Byter du ut "variabelnamn" mot namnet på variabeln du öppnat filen med och så länge det innanför parentesen går att skriva till filen så kommer "Hej" (eller vad du nu än har skrivit innanför parenteserna) att skrivas i filen. Kom ihåg att filen måste vara öppen i ett läge där du kan skriva data till filen och ett att filen måste vara skapad. Om detta stämmer så kan du navigera till filen och förhoppningsvis se detta i filens innehåll:
Bra. Du fungerar allt som det ska och du kan läsa vidare för att lära dig mer om att spara, skriva och läsa data från en fil i Python.
Läs data från en fil:
Att läsa data från en fil är enkelt. Du skriver bara:
Denna kod läser data från en fil:
Byt ut variabelnamn mot variabelnamnet som sparat din fil. Observera också att variabelnamn.read() fungerar som en variabel, vilket betyder att du måste sätta in funktionen i exempelvis en variabel eller print för att du ska kunna "se resultatet". Om du använder dig av "with io"-metoden, gå vidare till efter "with io"-loopen och öppna filen på nytt (inte intabbat) om det inte koden i "with io" loopen skulle fungera som den ska. En sådan kod skulle se ut så här:
Denna kod printar ut filens innehåll om du använder dig av "with.io"-funktionen:
Koden här ovanför printar även ut innehållet i filen. Koden här ovanför använder "with.io"-funktionen för att göra det möjligt att skriva å,ä och ö i filen. Om du inte använder dig av denna metod kan du använda read()-funktionen ännu enklare. Koden skulle då se ut så här:
Denna kod printar ut filens innehåll om du inte använder dig av "with io"-funktionen:
Okej, men vi säger att vi skulle vilja läsa data från bara en speciell rad i filen. Det är också fantastiskt enkelt.
Denna kod läser en speciell rad av filen.
Detta kommer att läsa en av filens rader. Koden ovan läser filens första rad. Vill du läsa en annan rad, t.ex. rad 5, är det lite krångligare, men inte svårt alls. Först måste du använda dig av en funktion som heter file.readlines(). Den sparas i en variabel.
Denna kod läser data från en speciell rad i filen:
Byt ut "variabel" mot variabeln filens rader ska läsas in i och variabelnamn mot variabeln du sparade filen i. Nu har varje rad sparats för sig i en lista och du kan läsa alla rader i t.ex. denna fil:
Med hjälp av "with.io" kan vi läsa rad tre i denna fil utan problem.
Denna kod läser och printar ut data från rad 3 i en fil:
Som du ser så kan vi skriv ut data i en speciell rad i en fil med hjälp av print, variabeln du läst filens rader i och sedan två "[]"-tecken. Du skriver bara vilken rad du vill läsa (på det stället där en trea står i koden ovan) och sedan får du detta resultat:
Nu har du lärt dig att läsa data från en speciell rad i en fil i Python!
Sammanfattning:
Att läsa data från en fil är också lika enkelt som att spara data till en fil. Kom ihåg att filens data raderas varje gång du öppnar filen igen och skriver något nytt till den. Det är viktigt att komma ihåg. Du kan alltså skriva en himla massa data varje gång du skriver något till filen, men när du kör programmet nästa gång så kommer det att skrivas över (detta gör ingenting om du bara skriver samma saker i filen varje gång den laddas om.)
Vad tyckte du om denna lektion? Betygsätt den gärna!
Uppgifter till lektionen:
Skapar du flera olika projekt, gör olika filer till varje projekt så att det inte blir en "filkrock". Skapar du t.ex. ett spel, skapa filen "spel.txt" och spara datan där och om du skapar en karaktärsskapare, skapa t.ex. filen "generator.txt" osv. Du kan såklart döpa filerna till vad du vill. Vill du jobba vidare på dina egna projekt kan du såklart också göra det.
- file.write fungerar som print, fast med filer istället. Kan du skriva data till en fil med hjälp av input och låta användaren välja vad den vill skriva till filen? Detta kan sedan läsas upp nästa gång användaren laddar in filen, så länge den läses in innan något nytt skrivs till filen.
- Kan du skapa en fil som skriver ut ett slumpvis genererat nummer med hjälp av Python?
- Går det att skapa ett spel där du kan låta användaren skapa en "karaktär" och välja ålder, namn och liknande? Datan kan sedan sparas i en fil.
- Hitta en "gammal" kod du har arbetat med tidigare, kopiera den i en ny Python-fil och gör den kompatibel med filer.