Hvordan åpne en fil ved å bruke with-setningen

Hvordan åpne en fil ved å bruke with-setningen

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




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




# 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

Hvordan åpne en fil ved å bruke with-setningen

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:

Hvordan åpne en fil ved å bruke with-setningen

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.