The cu cuvântul cheie în Python este folosit ca manager de context. Ca în orice limbaj de programare, utilizarea resurselor, cum ar fi operațiuni cu fișiere sau conexiuni la baze de date, este foarte comună. Dar aceste resurse sunt limitate ca aprovizionare. Prin urmare, principala problemă constă în a vă asigura că eliberați aceste resurse după utilizare. Dacă nu sunt eliberate, atunci aceasta va duce la scurgeri de resurse și poate cauza încetinirea sau blocarea sistemului.
După cum știm, funcția open() este utilizată în general pentru gestionarea fișierelor în Python. Dar este o practică standard să folosiți manageri de context, cum ar fi cu cuvintele cheie, pentru a gestiona fișierele, deoarece va elibera automat fișierele odată ce utilizarea lor este completă.
Python cu open() Sintaxă:
Sintaxă:
cu open(file_path, mode, encoding) ca fișier:
…
cale_fișier: Este calea către fișierul de deschis
modul: modul de operare pe dosar. ex.: citiți, scrieți etc. (reprezentat prin r, w, r+, w+, rb, wb etc.)
codificare: citiți fișierul în formatul de codificare corect.
Exemplul 1: Exemplu simplu de utilizare a instrucțiunii with
Avem deja un nume de fișier geeksforgeeks.txt în sistemul nostru și are următoarele date:

geeksforgeeks,txt
Acum vom deschide fișierul și vom citi conținutul fișierului folosind instrucțiunea with open():
Python3
np std
with>open>(>'geeksforgeeks.txt'>,>'r'>) as gfg_file:> >file_content>=> gfg_file.read()> >print>(file_content)> |
>
>
Ieșire:
GeeksForGeeks is best for DSA>
Notă: Aici am folosit modul ca r pentru a citi datele, deoarece fișierul țintă are date text. În cazul în care citim un fișier binar, trebuie să folosim rb ca mod.
Exemplul 2: Putem folosi și cu instrucțiune pentru a adăuga sau a scrie date în fișier.
Vom atașa șirul Salutare geeks! în fișierul nostru geeksforgeeks.txt.
Python3
șir la număr întreg
# 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)> |
>
>
Ieșire:
GeeksForGeeks is best for DSA Hello Geeks!>
Notă: Aici am folosit A ca mod de deschidere a fișierului, acest lucru se datorează faptului că dorim să anexăm la datele fișierului. În schimb, dacă am dori să suprascriem datele fișierului, am folosi În modul.
Exemplul 3: Utilizarea imbricată cu instrucțiunea deschisă pentru a deschide mai multe fișiere

links.txt
Am definit a links.txt fișier care conține câteva link-uri aleatorii. Vom deschide geeksforgeeks.txt fișierul menționat mai sus și adăugați conținutul fișierului de link-uri în fișierul geeksforgeeks.txt fişier.
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 conținutul fișierului după modificare:

geeksforgeeks,txt
Aici, putem vedea că conținutul links.txt fișierul a fost adăugat la geeksforgeeks.txt fișier după rularea scriptului.
Diferența de utilizare a open() față de open()
Deși funcția de utilizare deschis() și cu deschis() este exact același, dar există câteva diferențe importante:
- Folosind open() putem folosi handlerul de fișiere atâta timp cât fișierul nu a fost închis explicit folosind file_handler.close() , dar în cazul utilizării cu manager de context open(), nu putem folosi un handler de fișiere în afara blocului with. Se va ridica ValueError: operație I/O pe fișier închis în acest caz.
- În timp ce folosim open() trebuie să închidem explicit o instanță de fișier deschisă, altfel alte părți ale codului se pot confrunta cu erori la deschiderea aceluiași fișier. În cu open(), închiderea fișierului este gestionată de managerul de context.
- Folosirea declarației de context with open() face codul mai ordonat, deoarece putem separa cu ușurință blocurile de cod prin diferența de indentări. În cazul open(), s-ar putea să nu închidem instanța fișierului, acest lucru poate cauza pierderi de memorie și alte erori de operare I/O.