Kā atvērt failu, izmantojot paziņojumu ar
The ar atslēgvārds Python tiek izmantots kā konteksta pārvaldnieks. Tāpat kā jebkurā programmēšanas valodā, resursu, piemēram, failu operāciju vai datu bāzes savienojumu, izmantošana ir ļoti izplatīta. Taču šo resursu piedāvājums ir ierobežots. Tāpēc galvenā problēma ir nodrošināt šo resursu atbrīvošanu pēc izmantošanas. Ja tie netiks atbrīvoti, tas novedīs pie resursu noplūdes un var izraisīt sistēmas palēnināšanos vai avāriju.
Kā mēs zinām, funkcija open() parasti tiek izmantota failu apstrādei Python . Taču standarta prakse ir izmantot konteksta pārvaldniekus, piemēram, ar atslēgvārdiem, lai apstrādātu failus, jo tas automātiski atbrīvos failus, kad to lietošana ir pabeigta.
Python ar open() sintaksi:
Sintakse:
ar atvērtu (faila_ceļš, režīms, kodējums) kā fails:
…
file_path: Tas ir ceļš uz failu, kas jāatver
režīms: darbības režīms failā. piemēram: lasīt, rakstīt utt. (attēloti ar r, w, r+, w+, rb, wb utt.)
kodējums: izlasiet failu pareizā kodējuma formātā.
1. piemērs: Vienkāršs piemērs izmantošanai ar paziņojumu
Mums jau ir faila nosaukums geeksforgeeks.txt mūsu sistēmā, un tajā ir šādi dati:
geeksforgeeks, txt
Tagad mēs atvērsim failu un nolasīsim faila saturu, izmantojot ar open() paziņojumu:
Python3
with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > file_content> => gfg_file.read()> > print> (file_content)> |
Izvade:
GeeksForGeeks is best for DSA
Piezīme: Šeit mēs esam izmantojuši režīmu kā r lai lasītu datus, jo mērķa failā ir teksta dati. Ja mēs lasām kādu bināro failu, mums tas ir jāizmanto rb kā režīms.
2. piemērs: Mēs varam izmantot arī ar paziņojumu, lai failam pievienotu vai ierakstītu datus.
Mēs pievienosim virkni Sveiki džeki! uz mūsu geeksforgeeks.txt failu.
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)> |
Izvade:
GeeksForGeeks is best for DSA Hello Geeks!
Piezīme: Šeit mēs esam izmantojuši a kā faila atvēršanas režīmu, tas ir tāpēc, ka mēs vēlamies failam pievienot datus. Tā vietā, ja mēs vēlamies pārrakstīt faila datus, mēs izmantotu In režīmā.
3. piemērs. Nested izmantošana ar atvērtu priekšrakstu, lai atvērtu vairākus failus
saites.txt
Mēs esam definējuši a saites.txt failu, kurā ir dažas nejaušas saites. Mēs atvērsim geeksforgeeks.txt iepriekš minēto failu un pievienojiet saišu faila saturu geeksforgeeks.txt failu.
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 faila saturs pēc modifikācijas:
geeksforgeeks, txt
Šeit mēs varam redzēt, ka saturs saites.txt fails ir pievienots geeksforgeeks.txt failu pēc skripta palaišanas.
Atšķirība, izmantojot open() un open()
Lai gan izmantošanas funkcija atvērt () un ar atvērt () ir tieši tāds pats, taču ir dažas būtiskas atšķirības:
- Izmantojot open(), mēs varam izmantot failu apdarinātāju, ja vien fails nav skaidri aizvērts, izmantojot file_handler.close() , bet, ja izmantojat ar open() konteksta pārvaldnieku, mēs nevaram izmantot failu apdarinātāju ārpus ar bloka. Tas paaugstinās ValueError: I/O darbība slēgtā failā tādā gadījumā.
- Izmantojot open(), mums ir skaidri jāaizver atvērtā faila instance, pretējā gadījumā citas koda daļas var saskarties ar kļūdām, atverot to pašu failu. Izmantojot open(), faila aizvēršanu apstrādā konteksta pārvaldnieks.
- Izmantojot Open() konteksta paziņojumu, kods kļūst sakārtotāks, jo mēs varam viegli atdalīt kodu blokus pēc atkāpēm. Open() gadījumā mēs varam palaist garām faila instances aizvēršanu, tas var izraisīt atmiņas noplūdes un citas I/O darbības kļūdas.