logo

Kako odpreti datoteko s stavkom with

The z ključna beseda v Pythonu se uporablja kot upravitelj konteksta. Kot v vsakem programskem jeziku je uporaba virov, kot so datotečne operacije ali povezave z bazo podatkov, zelo pogosta. Toda ponudba teh virov je omejena. Zato je glavna težava zagotoviti sprostitev teh virov po uporabi. Če se ne sprostijo, bo to povzročilo uhajanje virov in lahko povzroči upočasnitev ali zrušitev sistema.

Kot vemo, se funkcija open() običajno uporablja za obdelavo datotek v Pythonu. Toda standardna praksa je uporaba upraviteljev konteksta, na primer s ključnimi besedami, za obdelavo datotek, saj bo samodejno sprostil datoteke, ko bo njihova uporaba končana.



Python s sintakso open():

Sintaksa:

z odprto (pot_datoteke, način, kodiranje) kot datoteko:



pot_datoteke: To je pot do datoteke, ki jo želite odpreti

način: način delovanja na datoteki. npr.: branje, pisanje itd. (predstavljeno z r, w, r+, w+, rb, wb itd.)

kodiranje: preberite datoteko v pravilnem formatu kodiranja.



Primer 1: Preprost primer uporabe izjave with

Ime datoteke že imamo geeksforgeeks.txt v našem sistemu in ima naslednje podatke:

geeksforgeeks, txt

Zdaj bomo odprli datoteko in prebrali vsebino datoteke s stavkom with open():

Python3

jquery s klikom




with>open>(>'geeksforgeeks.txt'>,>'r'>) as gfg_file:> >file_content>=> gfg_file.read()> >print>(file_content)>

>

>

Izhod:

GeeksForGeeks is best for DSA>

Opomba: Tukaj smo uporabili način kot r za branje podatkov, ker ima ciljna datoteka besedilne podatke. V primeru, da beremo binarno datoteko, moramo uporabiti rb kot način.

Primer 2: Uporabimo lahko tudi z stavek za dodajanje ali pisanje podatkov v datoteko.

Priložili bomo niz Pozdravljeni geeki! v našo datoteko geeksforgeeks.txt.

Python3




java za odmor
# 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)>

>

>

Izhod:

GeeksForGeeks is best for DSA Hello Geeks!>

Opomba: Tukaj smo uporabili a kot način odpiranja datoteke, je to zato, ker želimo datoteki dodati podatke. Namesto tega, če bi želeli prepisati podatke datoteke, bi uporabili noter način.

Primer 3: Uporaba ugnezdenega stavka z odpiranjem za odpiranje več datotek

Kako odpreti datoteko s stavkom with

povezave.txt

Določili smo a povezave.txt datoteka, ki vsebuje nekaj naključnih povezav. Odprli bomo geeksforgeeks.txt datoteko, omenjeno zgoraj, in dodajte vsebino datoteke s povezavami v geeksforgeeks.txt mapa.

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 vsebina datoteke po spremembi:

Kako odpreti datoteko s stavkom with

geeksforgeeks, txt

Tukaj lahko vidimo, da je vsebina povezave.txt datoteka je bila dodana v geeksforgeeks.txt datoteko po zagonu skripta.

Razlika med uporabo open() in open()

Čeprav je funkcija uporabe odprto() in z odprto() je popolnoma enak, vendar obstaja nekaj pomembnih razlik:

  • Z uporabo open() lahko uporabljamo upravljalnik datotek, dokler datoteka ni bila izrecno zaprta z uporabo file_handler.close() , vendar v primeru uporabe z upraviteljem konteksta open() ne moremo uporabiti upravljalnika datotek zunaj bloka with. Dvignilo se bo ValueError: V/I operacija na zaprti datoteki v tem primeru.
  • Med uporabo open() moramo eksplicitno zapreti primerek odprte datoteke, sicer se lahko drugi deli kode soočajo z napakami pri odpiranju iste datoteke. Pri open() zapiranje datoteke ureja upravitelj konteksta.
  • Uporaba kontekstnega stavka with open() naredi kodo bolj urejeno, saj lahko zlahka ločimo med bloki kode po razlikah v zamikih. V primeru open() lahko zamudimo zapiranje primerka datoteke, kar lahko povzroči uhajanje pomnilnika in druge napake v delovanju V/I.