Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Nøstede og Flere Kontekstbehandlere | Advanced File Handling & Context Managers
Python Strukturert Programmering

Nøstede og Flere Kontekstbehandlere

Sveip for å vise menyen

Når du arbeider med flere ressurser i Python – for eksempel når du åpner mer enn én fil samtidig – må du ofte sørge for at hver ressurs blir korrekt håndtert og frigitt. Dette er spesielt nyttig med nestede og flere kontekstbehandlere. Videoen ovenfor viser to tilnærminger: å nøste with-setninger og å bruke flere kontekstbehandlere på én linje.

Å nøste with-setninger betyr å plassere én with-blokk inne i en annen. Dette er nyttig når bruken av én ressurs avhenger av en annen. For eksempel kan du lese fra én fil og skrive til en annen, og sikre at begge filene håndteres korrekt:

with open('input.txt', 'r') as infile:
    with open('output.txt', 'w') as outfile:
        for line in infile:
            outfile.write(line.upper())

Python lar deg imidlertid også åpne begge filene i én enkelt with-setning, der hver kontekstbehandler skilles med komma. Denne tilnærmingen gjør koden din ryddigere og garanterer at hver ressurs frigjøres i motsatt rekkefølge av hvordan de ble anskaffet. Det betyr at den siste ressursen du åpner, er den første som lukkes når blokken avsluttes.

# Open two files simultaneously using a single 'with' statement
with open('input.txt', 'r') as infile, open('output.txt', 'w') as outfile:
    for line in infile:
        outfile.write(line.lower())
# When the block ends, outfile is closed first, then infile

Å bruke flere kontekstbehandlere på én linje er ikke bare syntaktisk pynt – det er en robust måte å håndtere flere ressurser samtidig. Dette er spesielt viktig når du arbeider med filer, nettverkstilkoblinger eller låser som alltid må frigjøres korrekt for å unngå ressurslekkasjer eller fastlåste tilstander.

question mark

Hvilket utsagn beskriver korrekt rekkefølgen ressursene frigjøres i når du bruker flere kontekstbehandlere i én with-setning?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 2. Kapittel 6
some-alt