logo

Come aprire un file utilizzando l'istruzione with

IL con La parola chiave in Python viene utilizzata come gestore del contesto. Come in qualsiasi linguaggio di programmazione, l'utilizzo di risorse come operazioni su file o connessioni a database è molto comune. Ma queste risorse sono limitate. Pertanto, il problema principale sta nell'assicurarsi di rilasciare queste risorse dopo l'utilizzo. Se non vengono rilasciati, ciò comporterà una perdita di risorse e potrebbe causare il rallentamento o l'arresto anomalo del sistema.

Come sappiamo, la funzione open() viene generalmente utilizzata per la gestione dei file in Python. Ma è una pratica standard utilizzare gestori di contesto come le parole chiave per gestire i file poiché rilascerà automaticamente i file una volta completato il suo utilizzo.



Python con la sintassi open():

Sintassi:

con open(percorso_file, modalità, codifica) come file:



percorso del file: È il percorso del file da aprire

modalità: modalità di funzionamento del file. es.: leggi, scrivi ecc. (rappresentato da r, w, r+, w+, rb, wb ecc.)

codifica: leggere il file nel formato di codifica corretto.



Esempio 1: Semplice esempio di utilizzo dell'istruzione with

Abbiamo già un nome di file geeksforgeeks.txt nel nostro sistema e contiene i seguenti dati:

geeksforgeeks, txt

Ora apriremo il file e leggeremo il contenuto del file utilizzando l'istruzione with open():

Python3

comando tocco in linux




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

>

>

Produzione:

GeeksForGeeks is best for DSA>

Nota: Qui abbiamo utilizzato la modalità as R per leggere i dati, perché il file di destinazione contiene dati di testo. Nel caso in cui stiamo leggendo un file binario, dobbiamo usare RB come modalità.

Esempio 2: Possiamo anche usare il con istruzione per aggiungere o scrivere dati nel file.

Aggiungeremo la stringa Ciao geek! nel nostro file geeksforgeeks.txt.

Python3




convertire una stringa fino ad oggi
# 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)>

>

>

Produzione:

GeeksForGeeks is best for DSA Hello Geeks!>

Nota: Qui abbiamo usato UN come modalità di apertura del file, questo perché vogliamo aggiungere al file i dati. Se invece volessimo sovrascrivere i dati del file, utilizzeremmo l'estensione In modalità.

Esempio 3: utilizzo dell'istruzione nidificata con open per aprire più file

Come aprire un file utilizzando l'istruzione with

link.txt

Abbiamo definito a link.txt file contenente alcuni collegamenti casuali. Apriremo il geeksforgeeks.txt file menzionato sopra e aggiungi il contenuto del file dei collegamenti nel file geeksforgeeks.txt file.

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 contenuto del file dopo la modifica:

Come aprire un file utilizzando l'istruzione with

geeksforgeeks, txt

Qui possiamo vedere che il contenuto del file link.txt il file è stato aggiunto al file geeksforgeeks.txt file dopo aver eseguito lo script.

Differenza tra l'uso di open() e open()

Sebbene la funzione di utilizzo aprire() E con aprire() è esattamente lo stesso ma ci sono alcune differenze importanti:

  • Utilizzando open() possiamo utilizzare il gestore di file purché il file non sia stato esplicitamente chiuso utilizzando file_handler.close() , ma in caso di utilizzo con il gestore di contesto open(), non possiamo utilizzare un gestore di file al di fuori del blocco with. Aumenterà ValueError: operazione di I/O su file chiuso in quel caso.
  • Durante l'utilizzo di open() dobbiamo chiudere esplicitamente un'istanza di file aperta, altrimenti altre parti del codice potrebbero riscontrare errori durante l'apertura dello stesso file. Con open() la chiusura del file è gestita dal gestore del contesto.
  • L'uso con l'istruzione di contesto open() rende il codice più ordinato poiché possiamo facilmente separare i blocchi di codice in base alla differenza nei rientri. In caso di open(), potremmo non riuscire a chiudere l'istanza del file, ciò potrebbe causare perdite di memoria e altri errori nelle operazioni di I/O.