Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Nästlade och multipla kontexthanterare | Advanced File Handling & Context Managers
Python Strukturell Programmering

Nästlade och multipla kontexthanterare

Svep för att visa menyn

När du arbetar med flera resurser i Python – till exempel när du öppnar mer än en fil samtidigt – behöver du ofta säkerställa att varje resurs hanteras korrekt, både vid öppning och stängning. Här blir nästlade och multipla kontext-hanterare särskilt användbara. Videon ovan visar två tillvägagångssätt: att nästla with-satser och att använda flera kontext-hanterare på en och samma rad.

Att nästla with-satser innebär att placera ett with-block inuti ett annat. Detta är användbart när användningen av en resurs är beroende av en annan. Till exempel kan du läsa från en fil och skriva till en annan, och samtidigt säkerställa att båda filerna hanteras korrekt:

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

Python tillåter dock även att du öppnar båda filerna i en enda with-sats, där varje kontext-hanterare separeras med ett kommatecken. Detta gör koden mer överskådlig och garanterar att varje resurs stängs i omvänd ordning mot hur de öppnades. Det innebär att den sista resursen du öppnar är den första som stängs när blocket avslutas.

# 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

Att använda flera kontext-hanterare på en rad är inte bara syntaktisk förenkling – det är ett robust sätt att hantera flera resurser samtidigt. Det är särskilt viktigt när du arbetar med filer, nätverksanslutningar eller lås som alltid måste frigöras korrekt för att undvika resursläckor eller deadlocks.

Note
Studera vidare
question mark

Vilket påstående beskriver korrekt i vilken ordning resurser frigörs när du använder flera kontext-hanterare i en enda with-sats?

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 6

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 6
some-alt