#f?rst - lage en fil som ikke eksisterer try: open("testfil.txt", 'x') #Om den eksisterer kaster x ut en FileExistsError, denne kan jeg kontrollere slik: except FileExistsError: print("filen eksisterer allerede") #Vi har to syntakser for ? skrive til filer og kan skrive p? to m?ter # 'w' overskriver og setter inn det vi ?nsker. PASS P?, J?VLIG SKUMMEL. sletter det som var i filen fra f?r # 'a' (append), legger til i slutten av filen, sletter ingenting! #m?te 1 ? skrive p?: with open("testfil.txt",'w') as f: f.write("N? har filen en setning") #Dette er metode 2: f = open("testfil.txt", 'w') f.write("N? har vi en ny setning\n") #Legger med linjeskift, det gj?r ikke filen automatisk. #P? denne metoden er det VELDIG viktig ? bruke f.close() til slutt. f.close() #Dette sier W3School om ? lukke filen: Note: You should always close your files, in some cases, due to buffering, changes made to a file may not show until you close the file. #S? apennding: with open("testfil.txt",'a') as f: f.write("Denne linjen sletter ikke den forrige\n") #For ? lese en fil kan vi bruke 'r', men det m? ikke gj?res siden dette er default til fil: #For ? garantere at ting blir gjort riktig og at filen ikke blir ?delagt om det kommer program-error kan vi #bruke try og finally hvis vi bruker f=open (se linje 17 til 20), men det trenger vi ikke med with: with open("testfil.txt",'r') as f: print(f.read()) #Den vil automatisk kj?re close n?r den g?r ut av with #Ved ? bruke seek() kan du hoppe til en spesifikk karakter i filen. #Vi kan ogs? bruke tell() for ? sjekke hvor hvilken posisjon vi er p? i fila. #Dette kan v?re nyttig hvis man for eksempel har bare lest litt av filen. with open("testfil.txt", 'r') as f: print(f.read(6)) #Denne leser bare de 6 f?rste karakterene. Om jeg lurer p? posisjonen i fila kan jeg skrive slik: print(f.tell()) #Om jeg ?nsker ? hoppe til et spesifikt sted kan jeg bruke seek: f.seek(0) #Hopper til start print(f.tell()) print(f.read()) #Vi kan ogs? bruke '+' for ? b?de lese og skrive til filer: with open("testfil.txt", 'a+') as f: f.write("Denne linjen skal v?re nederst\n") #Vi kan ogs? lese en spesifikk linje med en enkel kommando! print(f.readline()) #Denne leste f?rste linjen. Kj?rer vi den igjen kommer den til ? lese linje nummer to print(f.readline()) #Ved ? implementere l?kker kan man ogs? skrive ut hver linje: with open("testfil.txt", 'r') as f: for linje in f: print(linje, end='') #Hva gj?r jeg her?? pr?v ? fjern den, da blir det dobbelt linjeskift, denne fjerner det ene linjeskiftet som automatisk legges til n?r man printer. #S?, hvordan skriver man en liste eller ordbok inn i en fil? #La oss se p? lister: with open("testfil.txt", 'a+') as f: fotballspillere = ["Erik Botheim", "Karim Adeyemi", "Karim Benzema", "Brian Brobbey", "Jonathan David", "Erling Haaland", "Jordan Larsson", "Donyell Malen", "Lautaro Martinez", "Rafael Mir", "Diogo Jota", "Andre Silva", "Dusan Vlahovic"] #Her har jeg en liste med fotballspillere som jeg vil ha inn i fila, jeg vil ha en per linje og skille #fornavn og etternavn med komma, ikke sette dem direkte inn. for x in fotballspillere: #g?r gjennom hele listen v?r a = x.split() #Denne splitter navnene i 2 og legger dem i en midlertidig liste f.write(f'{a[0]}, {a[1]}\n') #Legger til fornavn og etternavn, skilt kun med komma #Det er alt, n? blir alle navnene lagt til. #Hva med ordbok? with open("testfil.txt", 'a+') as f: matvarer = {"iskrem":20 , "pizza":60, "pasta":35, "wok":40} #Over har vi en liste med matvarer og prisen deres. hvordan legges dette til slik at vi har matvare og pris skilt med komma? for x in matvarer: #Her er x selve matvaren, f. eks f?rst er den iskrem, s? er den pizza f.write(f'{x},{matvarer[x]}\n') #Som du ser s? vil formaterte strenger automatisk konvertere en pris (som er int) til en streng. #Man kan ogs? slette hele filer. Det finner man her: https://www.w3schools.com/python/python_file_remove.asp #Andre gode nettsider jeg brukte: https://www.pythontutorial.net/python-basics/python-create-text-file/ # og https://www.programiz.com/python-programming/file-operation