Python Academy · Lektion

Använda with-satsen för filer

Se till att filer stängs automatiskt med hjälp av kontexthanterare.

Lektion 3 av 414 steg

Använda with-satsen för filer är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Introduktion

with-satsen ser till att filer stängs automatiskt, även om ett undantag inträffar.

with-satsen

with open('file.txt') as f: ... stänger automatiskt f när blocket avslutas, oavsett om det sker normalt eller på grund av ett undantag.
# with open('data.txt') as f:
#     content = f.read()
# f is now closed
print('with demo')

Varför with är bättre än try/finally

Utan with måste du skriva try: ... finally: f.close() för att garantera att filen stängs. with hanterar detta automatiskt.
# Equivalent to:
# f = open('file.txt')
# try:
#     content = f.read()
# finally:
#     f.close()
print('comparison demo')

Flera filer

with open('a.txt') as a, open('b.txt') as b: öppnar två filer i samma sats.
# with open('in.txt') as src, open('out.txt','w') as dst:
#     for line in src:
#         dst.write(line.upper())
print('multi-file demo')

Protokollet för kontexthanterare

with använder __enter__ och __exit__. open() returnerar ett filobjekt som implementerar dessa. Senare skriver vi en egen kontexthanterare.
# f.__enter__() opens
# f.__exit__() closes
print('protocol demo')

Läsa och bearbeta

Kombinera with, for line in f: och .strip() för ren radbearbetning: ta bort radbrytningar och hoppa över tomma rader.
lines = ['  hello  \n', '  world  \n']
cleaned = [l.strip() for l in lines if l.strip()]
print(cleaned)

Skriva med with

with open('out.txt','w') as f: f.write('data') — filen töms och stängs när blocket lämnas.
# with open('out.txt', 'w') as f:
#     for i in range(10):
#         f.write(f'{i}\n')
print('write with demo')

Kontrollera om en fil finns

import os; os.path.exists('file.txt') returnerar True om filen finns. Det förhindrar FileNotFoundError.
import os
print(os.path.exists('/tmp'))
print(os.path.exists('/nonexistent'))

Fel från open()

FileNotFoundError: filen finns inte. PermissionError: inga läs- eller skrivrättigheter. Omslut koden med try/except för robust felhantering.
try:
    with open('/nonexistent.txt') as f:
        pass
except FileNotFoundError as e:
    print('File not found:', e)

StringIO för filer i minnet

from io import StringIO låter dig använda en sträng som ett filobjekt — utmärkt för att testa kod som bearbetar filer.
from io import StringIO
buf = StringIO('line1\nline2\n')
for line in buf:
    print(line.rstrip())

Modulen tempfile

tempfile.NamedTemporaryFile() skapar en temporär fil som tas bort när den stängs. Det är säkert för tillfällig databearbetning.
import tempfile
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=True) as f:
    f.write('temp data')
    print(f.name)

Snabb kontroll

Vad garanterar with-satsen när den används med filin- och utdata?

Sammanfattning

with open(f) as h: stänger automatiskt h. Använd flera mål för flera filer. Använd StringIO för testning i minnet. Hantera FileNotFoundError på ett smidigt sätt.

Fortsätt

Bra jobbat! Gå vidare till nästa lektion för att fortsätta utvecklas.
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Använda with-satsen för filer” gratis?

Ja – hela texten till ”Använda with-satsen för filer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Använda with-satsen för filer”?

Se till att filer stängs automatiskt med hjälp av kontexthanterare. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Använda with-satsen för filer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Öppna och läsa filer
  2. Skriva till och lägga till i filer
  3. Använda with-satsen för filer
  4. Arbeta med filsökvägar med pathlib
← Tillbaka till Python Academy