Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Arbejde med Forskellige Filtilstande | Advanced File Handling & Context Managers
Python Strukturel Programmering

Arbejde med Forskellige Filtilstande

Stryg for at vise menuen

Lær at bruge forskellige filtilstande i Python til læsning, skrivning og tilføjelse af filer med praktiske eksempler.

Python-filtilstande omfatter: 'r' til læsning, 'w' til skrivning (opretter/overskriver), 'a' til tilføjelse (opretter hvis mangler), 'b' til binær tilstand og '+' til læsning/skrivning. Vælg den rigtige tilstand for at undgå datatab.

Læsetilstand

Læsetilstand ('r') åbner en eksisterende fil kun til læsning. Du kan ikke skrive eller ændre filen, når du bruger denne tilstand. Hvis filen ikke findes, vil Python give en FileNotFoundError. Brug denne tilstand, når du vil tilgå og læse data fra en fil uden at ændre dens indhold.

123456
with 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 kode opretter en tekstfil med eksempelindhold og læser derefter indholdet fra filen og udskriver det.

Skrivemodus

Skrivemodus (w) i Python åbner en fil til skrivning. Brug w-tilstand, når du vil starte forfra med en fil, enten ved at oprette en ny eller ved at rydde en eksisterende fil for at erstatte dens indhold. Vær opmærksom: Alt eksisterende data i filen vil gå tabt, når du åbner den med w-tilstand.

1234567891011
with 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 kode viser filens indhold efter første skrivning og derefter efter overskrivning, så du kan se, hvordan tidligere data slettes og erstattes med nyt indhold.

Tilføjelsestilstand

Tilføjelsestilstand, angivet med filtilstanden 'a', åbner en fil for skrivning ved at tilføje nyt indhold til slutningen af filen. Hvis filen ikke eksisterer, oprettes den automatisk. Denne tilstand er nyttig, når du ønsker at bevare eksisterende data og blot tilføje mere information til sidst, såsom at logge nye poster eller opdatere registreringer over tid. I modsætning til skrivningstilstand ('w') fjerner eller overskriver tilføjelsestilstand aldrig eksisterende indhold.

123456789
with 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 kode opretter først en fil med noget indledende indhold. Derefter åbnes den samme fil i tilføjelsestilstand ('a') for at tilføje en ny linje til slutningen. Til sidst læses og udskrives hele filens indhold, så du kan se, at de nye data er blevet tilføjet til slutningen uden at slette eller ændre det oprindelige indhold.

Binær tilstand

Binær tilstand bruges, når du skal læse eller skrive filer som bytes i stedet for tekst. Dette er essentielt ved arbejde med ikke-tekstfiler, såsom billeder, lydfiler eller eksekverbare filer. Du kombinerer 'b' med andre filtilstande, såsom 'rb' for læsning i binær tilstand eller 'wb' for skrivning i binær tilstand.

Når du åbner en fil i binær tilstand, læses og skrives data præcis som rå bytes. Ingen kodning eller dekodning finder sted, så du skal håndtere dataene som bytes-objekter. Dette forhindrer problemer, der kan opstå ved læsning eller skrivning af filer, der ikke bruger standard tekstkodning.

12345678
byte_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, der indeholder beskeden 'Hello, binary world!', til en fil med navnet sample_binary.bin ved hjælp af write-binary mode ('wb'). b i tilstanden sikrer, at filen håndteres som binære data og ikke som tekst. Efter skrivning åbnes filen igen i read-binary mode ('rb') for at læse de rå bytes. Koden udskriver derefter den menneskeligt læsbare repræsentation af bytes-objektet.

Læse- og skrivetilstand

r+ filtilstand giver mulighed for både at læse fra og skrive til en eksisterende fil. Når du åbner en fil med r+, kan du læse dens indhold, ændre det eller tilføje nye data på et vilkårligt sted. Filen skal dog allerede eksistere – r+ opretter ikke en ny fil, hvis der ikke findes en med det angivne navn.

Denne tilstand er nyttig, når det er nødvendigt at opdatere eller behandle data i en fil uden at miste det eksisterende indhold. Enhver skriveoperation starter fra den aktuelle filposition, så det er muligt at styre præcist, hvor ændringerne sker, ved at bruge filpeger-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 output viser, at filens første linje blev overskrevet med succes. Ved at bruge læse-/skrivetilstand ('r+') kan du opdatere specifikke dele af en fil – for eksempel kun ændre den første linje – uden at slette eller genskrive hele filen. Dette er nyttigt, når du vil redigere eksisterende data og samtidig bevare andet indhold i filen.

Når du bruger 'r+'-tilstand, vil alt nyt indhold, du skriver, overskrive eksisterende indhold fra den aktuelle filposition. Hvis det nye indhold er kortere end det oprindelige, forbliver den resterende del af den gamle linje i filen. Det betyder, at dele af det tidligere indhold stadig kan være synlige efter den nye skrivning. Filen bliver ikke automatisk afkortet, så vær opmærksom på, at ekstra tegn fra det oprindelige indhold kan forblive efter slutningen af dine nye data.

1. Hvilken filtilstand skal du bruge, hvis du vil læse en eksisterende tekstfil uden at ændre den?

2. Hvilken filtilstand skal bruges for at tilføje nye data til slutningen af en eksisterende tekstfil uden at slette det nuværende indhold?

question mark

Hvilken filtilstand skal du bruge, hvis du vil læse en eksisterende tekstfil uden at ændre den?

Vælg det korrekte svar

question mark

Hvilken filtilstand skal bruges for at tilføje nye data til slutningen af en eksisterende tekstfil uden at slette det nuværende indhold?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 2. Kapitel 1
some-alt