Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Arbete med Olika Fil-Lägen | Advanced File Handling & Context Managers
Python Strukturell Programmering

Arbete med Olika Fil-Lägen

Svep för att visa menyn

Lär dig använda olika fil-lägen i Python för att läsa, skriva och lägga till filer med praktiska exempel.

Pythons fil-lägen inkluderar: 'r' för läsning, 'w' för skrivning (skapar/trunkerar), 'a' för tillägg (skapar om den saknas), 'b' för binärt läge och '+' för läsning/skrivning. Välj rätt läge för att undvika dataförlust.

Läs-läge

Läs-läget ('r') öppnar en befintlig fil för enbart läsning. Du kan inte skriva eller ändra filen när du använder detta läge. Om filen inte finns kommer Python att ge ett FileNotFoundError. Använd detta läge när du vill komma åt och läsa data från en fil utan att göra några ändringar i dess innehåll.

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)

Denna kod skapar en textfil med exempeldata och läser sedan och skriver ut innehållet från filen.

Skrivläge

Skrivläge (w) i Python öppnar en fil för skrivning. Använd w-läge när du vill börja om med en fil, antingen genom att skapa en ny eller genom att rensa en befintlig fil för att ersätta dess innehåll. Observera: allt befintligt data i filen kommer att gå förlorat när du öppnar den med w-läge.

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())

Den här koden visar filens innehåll efter första skrivningen och sedan efter överskrivning, så att du kan se hur tidigare data raderas och ersätts med nytt innehåll.

Lägg till-läge

Lägg till-läge, angivet med fil-läget 'a', öppnar en fil för skrivning genom att lägga till nytt innehåll i slutet av filen. Om filen inte finns skapas den automatiskt. Detta läge är användbart när du vill bevara befintlig data och bara lägga till mer information i slutet, till exempel vid loggning av nya poster eller uppdatering av register över tid. Till skillnad från skrivläge ('w') tas aldrig befintligt innehåll bort eller skrivs över i lägg till-läge.

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())

Denna kod skapar först en fil med ett initialt innehåll. Därefter öppnas samma fil i lägg till-läge ('a') för att lägga till en ny rad i slutet. Slutligen läses och skrivs hela filens innehåll ut så att du kan se att den nya datan har lagts till i slutet utan att det ursprungliga innehållet har tagits bort eller ändrats.

Binärt läge

Binärt läge används när filer behöver läsas eller skrivas som byte istället för text. Detta är nödvändigt vid arbete med icke-textfiler, såsom bilder, ljudfiler eller körbara filer. Du kombinerar 'b' med andra fillägen, till exempel 'rb' för läsning i binärt läge eller 'wb' för skrivning i binärt läge.

När en fil öppnas i binärt läge läses och skrivs data exakt som råa byte. Ingen kodning eller avkodning sker, så data måste hanteras som bytes-objekt. Detta förhindrar problem som kan uppstå vid läsning eller skrivning av filer som inte använder standard textkodning.

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-sträng som innehåller meddelandet 'Hello, binary world!' till en fil med namnet sample_binary.bin med hjälp av skriv-binärt läge ('wb'). b i läget säkerställer att filen hanteras som binärdata, inte text. Efter skrivningen öppnas filen igen i läs-binärt läge ('rb') för att läsa de råa byten. Koden skriver sedan ut den läsbara representationen av bytes-objektet.

Läs- och skrivläge

r+-fil-läget tillåter både läsning från och skrivning till en befintlig fil. När du öppnar en fil med r+ kan du läsa dess innehåll, ändra det eller lägga till ny data på valfri position. Filen måste dock redan existera – r+ skapar inte en ny fil om det inte finns någon med det angivna namnet.

Detta läge är användbart när du behöver uppdatera eller bearbeta data i en fil utan att förlora dess befintliga innehåll. Alla skrivoperationer börjar från den aktuella filpositionen, så du kan exakt styra var ändringar sker genom att använda filpekar-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())

Denna utdata visar att filens första rad har skrivits över. Genom att använda läs-/skrivläge ('r+') kan du uppdatera specifika delar av en fil – till exempel ändra endast den första raden – utan att radera eller skriva om hela filen. Detta är användbart för att redigera befintliga data samtidigt som annat innehåll i filen bevaras.

När du använder 'r+'-läge kommer all ny data du skriver att skriva över befintligt innehåll från den aktuella filpositionen. Om det nya innehållet är kortare än det ursprungliga, kommer resterande del av den gamla raden att finnas kvar i filen. Det innebär att delar av det tidigare innehållet kan synas efter den nya skrivningen. Filen trunkeras inte automatiskt, så var medveten om att extra tecken från det ursprungliga innehållet kan finnas kvar efter slutet av din nya data.

1. Vilket filläge ska du använda om du vill läsa en befintlig textfil utan att ändra den?

2. Vilket filläge ska användas för att lägga till ny data i slutet av en befintlig textfil utan att ta bort dess nuvarande innehåll?

question mark

Vilket filläge ska du använda om du vill läsa en befintlig textfil utan att ändra den?

Vänligen välj det korrekta svaret

question mark

Vilket filläge ska användas för att lägga till ny data i slutet av en befintlig textfil utan att ta bort dess nuvarande innehåll?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 2. Kapitel 1
some-alt