logo

Kaip atidaryti failą naudojant teiginį su

The su Python raktinis žodis naudojamas kaip konteksto tvarkyklė. Kaip ir bet kurioje programavimo kalboje, išteklių, pvz., failų operacijų ar duomenų bazių jungčių, naudojimas yra labai dažnas. Tačiau šių išteklių pasiūla yra ribota. Todėl pagrindinė problema yra užtikrinti, kad šie ištekliai būtų išleisti po naudojimo. Jei jie nebus išleisti, nutekės ištekliai ir sistema gali sulėtėti arba sugesti.

Kaip žinome, funkcija open() paprastai naudojama failams tvarkyti Python . Tačiau failams tvarkyti įprasta naudoti konteksto tvarkykles, pvz., su raktiniais žodžiais, nes failai bus automatiškai išleisti, kai bus baigtas naudojimas.



Python su open() sintaksė:

Sintaksė:

su open (failo_kelias, režimas, kodavimas) kaip failas:



bylos kelias: Tai kelias į failą, kurį reikia atidaryti

režimas: failo veikimo režimas. pvz.: skaityti, rašyti ir pan. (pavaizduota r, w, r+, w+, rb, wb ir t. t.)

kodavimas: perskaitykite failą tinkamo kodavimo formatu.



1 pavyzdys: Paprastas pavyzdys naudojant su teiginiu

Jau turime failo pavadinimą geeksforgeeks.txt mūsų sistemoje ir joje yra šie duomenys:

geeksforgeeks, txt

Dabar atidarysime failą ir perskaitysime failo turinį naudodami open() teiginį:

Python3

apvalaus turnyro tvarkaraštis




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

>

>

Išvestis:

GeeksForGeeks is best for DSA>

Pastaba: Čia mes naudojome režimą kaip r nuskaityti duomenis, nes tiksliniame faile yra tekstinių duomenų. Jei skaitome dvejetainį failą, turime naudoti rb kaip režimas.

2 pavyzdys: Taip pat galime naudoti su pareiškimas duomenims pridėti arba įrašyti į failą.

Mes pridėsime eilutę Sveiki geekai! į mūsų geeksforgeeks.txt failą.

Python3




tuščia 0
# 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)>

>

>

Išvestis:

GeeksForGeeks is best for DSA Hello Geeks!>

Pastaba: Čia mes panaudojome a kaip failo atidarymo režimą, taip yra todėl, kad norime prie failo pridėti duomenis. Vietoj to, jei norėtume perrašyti failo duomenis, naudotume Į režimu.

3 pavyzdys: įdėtos su atviruoju sakiniu naudojimas norint atidaryti kelis failus

Kaip atidaryti failą naudojant teiginį su

nuorodos.txt

Mes apibrėžėme a nuorodos.txt failą, kuriame yra keletas atsitiktinių nuorodų. Mes atidarysime geeksforgeeks.txt pirmiau minėtą failą ir pridėkite nuorodų failo turinį į geeksforgeeks.txt failą.

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 failo turinys po pakeitimo:

Kaip atidaryti failą naudojant teiginį su

geeksforgeeks, txt

Čia matome, kad turinio nuorodos.txt failas buvo pridėtas prie geeksforgeeks.txt failą paleidus scenarijų.

Skirtumas naudojant open() ir su open()

Nors naudojimo funkcija atviras() ir su atviras() yra visiškai tas pats, tačiau yra keletas svarbių skirtumų:

  • Naudodami open() galime naudoti failų tvarkyklę tol, kol failas nebuvo aiškiai uždarytas naudojant file_handler.close() , bet naudojant su open() konteksto tvarkykle, negalime naudoti failų tvarkyklės už bloko ribų. Tai pakels ValueError: I/O operacija uždarame faile tuo atveju.
  • Naudodami open() turime aiškiai uždaryti atidarytą failo egzempliorių, kitaip kitose kodo dalyse gali atsirasti klaidų atidarant tą patį failą. Naudojant open() failo uždarymą tvarko konteksto tvarkyklė.
  • Naudojant su open() konteksto teiginiu, kodas tampa tvarkingesnis, nes galime lengvai atskirti kodo blokus pagal įtraukų skirtumus. Jei atidaroma (), galime neuždaryti failo egzemplioriaus, todėl gali atsirasti atminties nutekėjimo ir kitų įvesties / išvesties veikimo klaidų.