De med nyckelordet i Python används som en kontexthanterare. Som i alla programmeringsspråk är användningen av resurser som filoperationer eller databasanslutningar mycket vanligt. Men tillgången på dessa resurser är begränsad. Därför ligger huvudproblemet i att se till att frigöra dessa resurser efter användning. Om de inte släpps kommer det att leda till resursläckage och kan få systemet att antingen sakta ner eller krascha.
Som vi vet används funktionen open() vanligtvis för filhantering i Python . Men det är en vanlig praxis att använda sammanhangshanterare som med nyckelord för att hantera filer eftersom det automatiskt släpper filer när användningen är klar.
Python med open()-syntax:
Syntax:
med öppen(filsökväg, läge, kodning) som fil:
…
sökväg: Det är sökvägen till filen som ska öppnas
läge: driftsätt på filen. ex.: läsa, skriva etc. (representeras av r, w, r+, w+, rb, wb etc.)
kodning: läs filen i korrekt kodningsformat.
Exempel 1: Enkelt exempel med användning av med-utlåtandet
Vi har redan ett filnamn geeksforgeeks.txt i vårt system, och det har följande data:

geeksforgeeks,txt
Nu kommer vi att öppna filen och läsa innehållet i filen med hjälp av open()-satsen:
Python3
insättningssorteringsalgoritmer
with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > file_content> => gfg_file.read()> > print> (file_content)> |
>
>
Produktion:
GeeksForGeeks is best for DSA>
Notera: Här har vi använt läge som r för att läsa data, eftersom målfilen har textdata. Om vi läser någon binär fil måste vi använda rb som läget.
Exempel 2: Vi kan också använda med uttalande för att lägga till eller skriva data till filen.
Vi lägger till strängen Hej nördar! till vår geeksforgeeks.txt-fil.
Python3
npm installationskommando
# appending string to file> with> open> (> 'geeksforgeeks.txt'> ,> 'a'> ) as gfg_file:> > gfg_file.write(> '
Hello Geeks!'> )> > # reading the file contents> # to verify if successfully appended the data> with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > content> => gfg_file.read()> > print> (content)> |
>
>
Produktion:
GeeksForGeeks is best for DSA Hello Geeks!>
Notera: Här har vi använt a som sättet att öppna filen beror det på att vi vill lägga till fildata. Istället, om vi ville skriva över fildata, skulle vi använda I läge.
Exempel 3: Användning av kapslad med open-sats för att öppna flera filer

links.txt
Vi har definierat a links.txt fil som innehåller några slumpmässiga länkar. Vi kommer att öppna geeksforgeeks.txt fil som nämns ovan och lägg till innehållet i länkfilen i geeksforgeeks.txt fil.
Python3
# appending string to file> with> open> (> 'geeksforgeeks.txt'> ,> 'a'> ) as gfg_file:> > gfg_file.write(> '
Hello Geeks!'> )> > with> open> (> 'links.txt'> ,> 'r'> ) as links_file:> > lines> => links_file.readlines()> > gfg_file.writelines(lines)> |
>
>
geeksforgeeks.txt filinnehåll efter ändring:

geeksforgeeks,txt
Här kan vi se att innehållet i links.txt filen har lagts till i geeksforgeeks.txt fil efter att ha kört skriptet.
Skillnaden mellan att använda open() och med open()
Även om funktionen att använda öppen() och med öppen() är exakt samma, men det finns några viktiga skillnader:
- Genom att använda open() kan vi använda filhanteraren så länge som filen inte explicit har stängts med file_handler.close() , men vid användning med open() context manager, kan vi inte använda en filhanterare utanför with-blocket. Det kommer att höjas ValueError: I/O-operation på stängd fil isåfall.
- När vi använder open() måste vi uttryckligen stänga en öppnad filinstans, annars kan andra delar av koden få fel när vi öppnar samma fil. I med open() hanteras stängningen av filen av kontexthanteraren.
- Att använda med open() kontextsats gör koden mer städad eftersom vi enkelt kan separera mellan kodblock genom skillnad i indrag. I händelse av open(), kan vi missa att stänga filinstansen, detta kan orsaka minnesläckor och andra I/O-operationsfel.