### Fil ## Lese fra fil # Det i hovedsak to måter å lese inn fra fil på # Måte 1: # Åpne fila med open() og lagre den til en variabel # Første argument er filbanen (navnet på fila og eventuelt veien dit gjennom mapper) # Andre argument, "r", spesifiserer at vi har lyst til å lese fra fila (r for read) # encoding="utf-8" kan være nødvendig for enkelte maskiner, så det kan være lurt å ta med fil = open("test.txt", "r", encoding="utf-8") # Vi kan nå lese teksten fra fila # Dette kan vi gjøre på følgende måter: # 1. Metoden .read() – Henter ut hele teksten som en sammenhengende streng hele_teksten = fil.read() # 2. Metoden .readline() – Henter ut første linje som en streng. Neste gang den kalles hentes andre linje, så tredje, osv. # print(type(hele_teksten)) ==> str en_linje = fil.readline() # print(type(en_linje)) ==> str # 2. Metoden .readlines() – Henter ut alle linjene som en liste av strenger alle_linjer = fil.readlines() # print(type(alle_linjer)) ==> list[str] # Vi må så huske å lukke den åpne fila (god skikk for å unngå problemer) fil.close() # fil.read() fungerer ikke etter dette # Måte 2: # Bruk 'with open()' for å slippe å huske på å bruke close with open("test.txt", "r", encoding="utf-8") as inndata: # Vi hopper nå et hakk inn. Mens vi er her inne kan vi lest_data = inndata.read() # Nå som vi har hoppet tilbake er fila lukket # og inndata.read() fungerer ikke lenger # Men vi kan fortsatt bruke variablen lest_data print(lest_data[:25]) ## Skrive til fil # Vi kan bruke de to samme måtene for å skrive til fil # Vi må bare bytte "r" til "w" for write utfil = open("min-nye-fil.txt", "w", encoding="utf-8") # Men OBS! Dette vil opprette den spesifiserte fila hvis den ikke finnes # Hvis den allerede finnes vil den slette alt som er der fra før og skrive over # Man kan også åpne med "a" for append for å legge til data på bunnen av fila # Vi legger til ny tekst med .write() # Legg merke til at vi selv må legge til linjeskift med \n utfil.write("Dette blir første linje\n") utfil.write("Og dette blir andre") # Husk igjen å lukke fila! utfil.close()