The kanssa Pythonissa avainsanaa käytetään kontekstinhallinnana. Kuten missä tahansa ohjelmointikielessä, resurssien, kuten tiedostotoimintojen tai tietokantayhteyksien, käyttö on hyvin yleistä. Mutta näiden resurssien tarjonta on rajallinen. Siksi suurin ongelma on varmistaa, että nämä resurssit vapautetaan käytön jälkeen. Jos niitä ei vapauteta, se johtaa resurssivuotoon ja voi aiheuttaa järjestelmän joko hidastumisen tai kaatumisen.
Kuten tiedämme, open()-funktiota käytetään yleensä tiedostojen käsittelyyn Pythonissa. Mutta tavallinen käytäntö on käyttää kontekstinhallintaohjelmia kuten avainsanoja tiedostojen käsittelyyn, koska se vapauttaa tiedostot automaattisesti, kun sen käyttö on valmis.
Python open()-syntaksilla:
Syntaksi:
open(file_path, mode, koodaus) tiedostona:
…
tiedostopolku: Se on avattavan tiedoston polku
tila: toimintatapa tiedostossa. esim.: lue, kirjoita jne. (esittää r, w, r+, w+, rb, wb jne.)
koodaus: lue tiedosto oikeassa koodausmuodossa.
Esimerkki 1: Yksinkertainen esimerkki käyttämällä lauseketta
Meillä on jo tiedostonimi geeksforgeeks.txt järjestelmässämme, ja siinä on seuraavat tiedot:

geeksforgeeks, txt
Nyt avaamme tiedoston ja luemme tiedoston sisällön käyttämällä open() -lausetta:
Python 3
symmetrinen ero
with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > file_content> => gfg_file.read()> > print> (file_content)> |
>
>
Lähtö:
GeeksForGeeks is best for DSA>
Huomautus: Tässä olemme käyttäneet tilaa as r tietojen lukemiseen, koska kohdetiedostossa on tekstidataa. Jos luemme jotakin binaaritiedostoa, meidän on käytettävä rb tilana.
Esimerkki 2: Voimme myös käyttää kanssa lauseke tietojen lisäämiseksi tai kirjoittamiseksi tiedostoon.
Liitämme merkkijonon Hei nörttiläiset! geeksforgeeks.txt-tiedostoomme.
Python 3
java-merkkijonojen ketjutus
# 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)> |
>
>
Lähtö:
GeeksForGeeks is best for DSA Hello Geeks!>
Huomautus: Täällä olemme käyttäneet a tiedoston avaamistilana, tämä johtuu siitä, että haluamme liittää tiedostoon tietoja. Sen sijaan, jos haluamme korvata tiedoston tiedot, käyttäisimme Sisään tila.
Esimerkki 3: Useiden tiedostojen avaaminen sisäkkäisillä ja avoimella käskyllä

links.txt
Olemme määritelleet a links.txt tiedosto, joka sisältää satunnaisia linkkejä. Avaamme geeksforgeeks.txt yllä mainittu tiedosto ja liitä linkkitiedoston sisältö tiedostoon geeksforgeeks.txt tiedosto.
Python 3
# 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 tiedoston sisältö muokkauksen jälkeen:

geeksforgeeks, txt
Täällä voimme nähdä, että sisältö links.txt tiedosto on lisätty geeksforgeeks.txt tiedosto komentosarjan suorittamisen jälkeen.
Ero open():n ja open()-käytön välillä
Vaikka toiminto käyttää avata() ja kanssa avata() on täsmälleen sama, mutta siinä on joitain tärkeitä eroja:
- Käyttämällä open() voimme käyttää tiedostonkäsittelijää niin kauan kuin tiedostoa ei ole erikseen suljettu käyttämällä file_handler.close() , mutta käytettäessä open() kontekstinhallintaa, emme voi käyttää tiedostokäsittelijää kanssa-lohkon ulkopuolella. Se nostaa ValueError: I/O-toiminto suljetussa tiedostossa siinä tapauksessa.
- Kun käytät open():tä, meidän on suljettava avattu tiedoston ilmentymä, muuten koodin muut osat voivat kohdata virheitä avattaessa samaa tiedostoa. Open():llä tiedoston sulkemisen hoitaa kontekstinhallinta.
- Open()-kontekstilausekkeen käyttäminen tekee koodista siistimmän, koska voimme helposti erottaa koodilohkot sisennysten erojen perusteella. Jos kyseessä on open(), saatamme jättää tiedostoinstanssin sulkematta, mikä voi aiheuttaa muistivuotoja ja muita I/O-toimintovirheitä.