De med nøkkelord i Python brukes som kontekstbehandling. Som i alle programmeringsspråk er bruken av ressurser som filoperasjoner eller databasetilkoblinger svært vanlig. Men disse ressursene er begrenset i tilbud. Derfor ligger hovedproblemet i å sørge for å frigjøre disse ressursene etter bruk. Hvis de ikke frigjøres, vil det føre til ressurslekkasje og kan føre til at systemet enten bremser ned eller krasjer.
Som vi vet, brukes open()-funksjonen vanligvis for filhåndtering i Python . Men det er en standard praksis å bruke kontekstadministratorer som med nøkkelord for å håndtere filer, da det automatisk vil frigi filer når bruken er fullført.
Python med åpen()-syntaks:
Syntaks:
med åpen (filbane, modus, koding) som fil:
…
filbane: Det er banen til filen som skal åpnes
modus: driftsmodus på filen. eks.: les, skriv osv. (representert med r, w, r+, w+, rb, wb osv.)
koding: les filen i riktig kodeformat.
Eksempel 1: Enkelt eksempel som bruker The with Statement
Vi har allerede et filnavn geeksforgeeks.txt i systemet vårt, og det har følgende data:

geeksforgeeks, txt
Nå vil vi åpne filen og lese innholdet i filen ved å bruke med open()-setning:
Python3
kunstig nevrale nettverk
with>open>(>'geeksforgeeks.txt'>,>'r'>) as gfg_file:> >file_content>=> gfg_file.read()> >print>(file_content)> |
>
>
Produksjon:
GeeksForGeeks is best for DSA>
Merk: Her har vi brukt modus som r for å lese dataene, fordi målfilen har tekstdata. I tilfelle vi leser en binær fil, må vi bruke rb som modus.
Eksempel 2: Vi kan også bruke med setning for å legge til eller skrive data til filen.
Vi legger til strengen Hei nerder! til vår geeksforgeeks.txt-fil.
Python3
kjøre script shell
# 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)> |
>
>
Produksjon:
GeeksForGeeks is best for DSA Hello Geeks!>
Merk: Her har vi brukt en som modus for å åpne filen, er dette fordi vi ønsker å legge til fildataene. I stedet, hvis vi ønsket å overskrive fildataene, ville vi bruke I modus.
Eksempel 3: Bruk av nestet med åpen uttalelse for å åpne flere filer

links.txt
Vi har definert en links.txt fil som inneholder noen tilfeldige lenker. Vi vil åpne geeksforgeeks.txt filen nevnt ovenfor og legg til innholdet i lenkefilen 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 filinnhold etter endring:

geeksforgeeks, txt
Her kan vi se at innholdet i links.txt filen er lagt til geeksforgeeks.txt fil etter å ha kjørt skriptet.
Forskjellen mellom å bruke open() og med open()
Selv om funksjonen til å bruke åpen() og med åpen() er nøyaktig det samme, men det er noen viktige forskjeller:
- Ved å bruke open() kan vi bruke filbehandleren så lenge filen ikke har blitt eksplisitt lukket med file_handler.close() , men i tilfelle bruk med open() kontekstbehandling, kan vi ikke bruke en filbehandler utenfor with-blokken. Det vil heve ValueError: I/O-operasjon på lukket fil i så fall.
- Når vi bruker open() må vi eksplisitt lukke en åpnet filforekomst, ellers kan andre deler av koden få feil når vi åpner den samme filen. I med open() håndteres lukkingen av filen av kontekstbehandlingen.
- Bruk med open() kontekstsetning gjør koden mer ryddig ettersom vi enkelt kan skille mellom kodeblokker etter forskjell i innrykk. I tilfelle open(), kan vi gå glipp av å lukke filforekomsten, dette kan føre til minnelekkasjer og andre I/O-operasjonsfeil.