Ako otvoriť súbor pomocou príkazu with

Ako otvoriť súbor pomocou príkazu with

The s Kľúčové slovo v Pythone sa používa ako kontextový manažér. Rovnako ako v každom programovacom jazyku je veľmi bežné používanie zdrojov, ako sú operácie so súbormi alebo pripojenia k databáze. Ponuka týchto zdrojov je však obmedzená. Preto hlavný problém spočíva v zabezpečení uvoľnenia týchto zdrojov po použití. Ak nie sú uvoľnené, povedie to k úniku zdrojov a môže spôsobiť spomalenie alebo zlyhanie systému.

Ako vieme, funkcia open() sa vo všeobecnosti používa na prácu so súbormi v Pythone. Je však štandardnou praxou používať kontextových manažérov, ako sú kľúčové slová, na spracovanie súborov, pretože súbory automaticky uvoľnia po dokončení používania.

Python so syntaxou open():

Syntax:

s open(file_path, mode, encoding) ako súbor:

cesta k súboru: Je to cesta k súboru, ktorý sa má otvoriť

režim: režim prevádzky na súbore. napr.: čítať, písať atď. (reprezentované r, w, r+, w+, rb, wb atď.)

kódovanie: čítať súbor v správnom formáte kódovania.

Príklad 1: Jednoduchý príklad s použitím príkazu s

Už máme názov súboru geeksforgeeks.txt v našom systéme a obsahuje nasledujúce údaje:

geeksforgeeks,txt

Teraz otvoríme súbor a prečítame obsah súboru pomocou príkazu open():

Python3




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

Výkon:

GeeksForGeeks is best for DSA 

Poznámka: Tu sme použili režim ako r na čítanie údajov, pretože cieľový súbor obsahuje textové údaje. V prípade, že čítame nejaký binárny súbor, musíme použiť rb ako režim.

Príklad 2: Môžeme tiež použiť s príkaz na pripojenie alebo zápis údajov do súboru.

Pripojíme reťazec Ahojte geekovia! do nášho súboru geeksforgeeks.txt.

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)>

Výkon:

GeeksForGeeks is best for DSA Hello Geeks! 

Poznámka: Tu sme použili a ako režim otvárania súboru je to preto, že chceme k súborom pripojiť údaje. Namiesto toho, ak by sme chceli prepísať údaje súboru, použili by sme In režim.

Príklad 3: Použitie vnoreného príkazu open na otvorenie viacerých súborov

Ako otvoriť súbor pomocou príkazu with

links.txt

Definovali sme a links.txt súbor obsahujúci nejaké náhodné odkazy. Otvoríme geeksforgeeks.txt súbor uvedený vyššie a pripojte obsah súboru odkazov do súboru geeksforgeeks.txt súbor.

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 obsah súboru po úprave:

Ako otvoriť súbor pomocou príkazu with

geeksforgeeks,txt

Tu môžeme vidieť, že obsah links.txt súbor bol pridaný do súboru geeksforgeeks.txt súbor po spustení skriptu.

Rozdiel v používaní open() a open()

Aj keď funkcia používania OTVORENÉ() a s OTVORENÉ() je úplne rovnaký, ale je tu niekoľko dôležitých rozdielov:

  • Pomocou open() môžeme použiť obslužný program súboru, pokiaľ súbor nebol explicitne zatvorený pomocou file_handler.close() , ale v prípade použitia s kontextovým manažérom open() nemôžeme použiť obsluhu súboru mimo bloku with. Zvýši sa to ValueError: I/O operácia na uzavretom súbore v tom prípade.
  • Pri používaní open() musíme explicitne zatvoriť inštanciu otvoreného súboru, inak sa môžu pri otváraní toho istého súboru vyskytnúť chyby v iných častiach kódu. Pomocou open() zatvorí súbor kontextový manažér.
  • Použitie s kontextovým príkazom open() robí kód prehľadnejším, pretože môžeme ľahko oddeliť kód blok podľa rozdielu v zarážkach. V prípade open() môžeme vynechať zatvorenie inštancie súboru, čo môže spôsobiť úniky pamäte a iné chyby I/O operácie.