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
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:
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.