Arbeide med ulike filmoduser
Sveip for å vise menyen
Lær hvordan du bruker ulike filmoduser i Python for lesing, skriving og tillegg av filer med praktiske eksempler.
Python-filmoduser inkluderer: 'r' for lesing, 'w' for skriving (oppretter/trunkerer), 'a' for tillegg (oppretter hvis mangler), 'b' for binærmodus, og '+' for lesing/skriving. Velg riktig modus for å unngå datatap.
Lesemodus
Lesemodus ('r') åpner en eksisterende fil kun for lesing. Du kan ikke skrive til eller endre filen når du bruker denne modusen. Hvis filen ikke finnes, vil Python kaste en FileNotFoundError. Bruk denne modusen når du ønsker å få tilgang til og lese data fra en fil uten å gjøre endringer i innholdet.
123456with open("sample.txt", "w") as f: f.write("This is a sample file.\nSecond line.") with open("sample.txt", "r") as f: content = f.read() print(content)
Denne koden oppretter en tekstfil med eksempelinnhold og leser deretter innholdet fra filen og skriver det ut.
Skrive-modus
Skrive-modus (w) i Python åpner en fil for skriving. Bruk w-modus når du vil starte på nytt med en fil, enten ved å opprette en ny eller ved å tømme en eksisterende fil for å erstatte innholdet. Vær oppmerksom: alt eksisterende innhold i filen vil gå tapt når du åpner den med w-modus.
1234567891011with open("write_example.txt", "w") as file: file.write("This file was created or overwritten using write mode.\n") with open("write_example.txt", "r") as file: print(file.read()) with open("write_example.txt", "w") as file: file.write("Every time you run this code, the contents are replaced.\n") with open("write_example.txt", "r") as file: print(file.read())
Denne koden viser filinnholdet etter første skriving og deretter etter overskriving, slik at du kan se hvordan tidligere data slettes og erstattes med nytt innhold.
Legg til-modus
Legg til-modus, angitt med filmodusen 'a', åpner en fil for skriving ved å legge til nytt innhold på slutten av filen. Hvis filen ikke eksisterer, blir den automatisk opprettet. Denne modusen er nyttig når du ønsker å bevare eksisterende data og bare legge til mer informasjon på slutten, for eksempel ved logging av nye oppføringer eller oppdatering av poster over tid. I motsetning til skrive-modus ('w'), fjerner eller overskriver aldri legg til-modus eksisterende innhold.
123456789with open("append_example.txt", "w") as f: f.write("Original line\n") with open("append_example.txt", "a") as f: f.write("Appended line\n") with open("append_example.txt", "r") as f: result = f.read() print(result.strip())
Denne koden oppretter først en fil med noe innhold. Deretter åpnes den samme filen i tillegg-modus ('a') for å legge til en ny linje på slutten. Til slutt leses og skrives hele filinnholdet ut slik at du kan se at de nye dataene ble lagt til på slutten uten å slette eller endre det opprinnelige innholdet.
Binærmodus
Binærmodus brukes når du må lese eller skrive filer som bytes i stedet for tekst. Dette er nødvendig for å arbeide med ikke-tekstfiler, som bilder, lydfiler eller kjørbare filer. Du kombinerer 'b' med andre filmoduser, som 'rb' for lesing i binærmodus eller 'wb' for skriving i binærmodus.
Når du åpner en fil i binærmodus, blir data lest og skrevet nøyaktig som rå bytes. Ingen koding eller dekoding skjer, så du må håndtere dataene som bytes-objekter. Dette forhindrer problemer som kan oppstå når du leser eller skriver filer som ikke bruker standard tekstkoding.
12345678byte_data = b"\x48\x65\x6c\x6c\x6f, binary world!" # This is 'Hello, binary world!' in bytes with open("sample_binary.bin", "wb") as f: f.write(byte_data) with open("sample_binary.bin", "rb") as f: read_bytes = f.read() print(read_bytes)
Koden skriver en byte-streng som inneholder meldingen 'Hello, binary world!' til en fil med navnet sample_binary.bin ved bruk av write-binary-modus ('wb'). b i modus sikrer at filen håndteres som binærdata, ikke tekst. Etter skriving åpnes filen igjen i read-binary-modus ('rb') for å lese de rå bytene. Koden skriver deretter ut den menneskelesbare representasjonen av bytes-objektet.
Les og skriv-modus
r+ filmodus gir mulighet til både å lese fra og skrive til en eksisterende fil. Når du åpner en fil med r+, kan du lese innholdet, endre det eller legge til nye data på hvilken som helst posisjon. Filen må imidlertid allerede eksistere – r+ vil ikke opprette en ny fil hvis det ikke finnes en med det angitte navnet.
Denne modusen er nyttig når du trenger å oppdatere eller behandle data i en fil uten å miste eksisterende innhold. Enhver skriveoperasjon starter fra gjeldende filposisjon, slik at du kan kontrollere nøyaktig hvor endringer skjer ved å bruke filpeker-metoder som seek().
1234567891011121314151617# Writing initial content to the file with open("data.txt", "w") as f: f.write("First line\nSecond line\n") # Opening the file in r+ mode for reading and updating with open("data.txt", "r+") as f: # Reading and printing the original content original_content = f.read() print("Before update:\n" + original_content.strip()) # Moving file pointer to the beginning f.seek(0) # Overwriting the first line f.write("Updated first line\n") # Moving pointer to the start to read the updated content f.seek(0) updated_content = f.read() print("After update:\n" + updated_content.strip())
Denne utdataen viser at filens første linje ble overskrevet. Ved å bruke lese-/skrivemodus ('r+') kan du oppdatere bestemte deler av en fil – for eksempel bare endre første linje – uten å slette eller skrive om hele filen. Dette er nyttig for å redigere eksisterende data samtidig som annet innhold i filen beholdes.
Når du bruker 'r+'-modus, vil alt nytt du skriver overskrive eksisterende innhold fra nåværende filposisjon. Hvis det nye innholdet er kortere enn det opprinnelige, vil rester av den gamle linjen fortsatt være i filen. Det betyr at deler av tidligere innhold kan vises etter den nye teksten. Filen blir ikke automatisk avkortet, så vær oppmerksom på at ekstra tegn fra det opprinnelige innholdet kan forbli etter slutten av de nye dataene.
1. Hvilken filmodus bør du bruke hvis du vil lese en eksisterende tekstfil uten å endre den?
2. Hvilken filmodus bør brukes for å legge til nye data på slutten av en eksisterende tekstfil uten å slette det nåværende innholdet?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår