Articolo originale: File Handling in Python – How to Create, Read, and Write to a File

In questo tutorial, imparerai come aprire un file, scrivere nel file e chiuderlo. Imparerai anche come leggere un file usando Python.

Alla fine di questo tutorial, dovresti sapere le basi di come usare i file in Python.

Gestione dei File in Python

La gestione dei file è un'importante attività di ogni app web. Le tipologie di attività che puoi eseguire su di un file aperto sono controllate dalle modalità di accesso. Esse descrivono come un file verrà usato dopo essere stato aperto.

Queste modalità specificano, inoltre, dove deve trovarsi l'handle del file al suo interno. Simile a un puntatore, l'handle di un file indica dove vanno letti o inseriti i dati in un file.

In Python, ci sono sei metodi o modalità di accesso, che sono:

  1. Read Only (r – sola lettura): questa modalità apre il file di testo per la sola lettura. L'handle si trova all'inizio del file. Si verifica l'errore di I/O se il file non esiste. Questa è anche la modalità predefinita per aprire i file.
  2. Read and Write (r+ – lettura e scrittura): questo metodo apre il file sia per la lettura che per la scrittura. L'handle si trova all'inizio del file. Se il file non esiste, si verifica un errore di I/O.
  3. Write Only (w – sola scrittura): questa modalità apre il file per la sola scrittura. I dati in file già esistenti vengono modificati e sovrascritti. L'handle si trova all'inizio del file. Se il file non esiste già nella cartella, ne viene creato uno nuovo.
  4. Write and Read (w+ – scrittura e lettura): questa modalità apre il file sia per la lettura che per la scrittura. Il testo è sovrascritto e cancellato da un file esistente. L'handle si trova all'inizio del file.
  5. Append Only (a – sola aggiunta): questa modalità permette di aprire il file per la scrittura. Se il file non esiste, ne viene creato uno nuovo. L'handle si trova alla fine del file. I nuovi dati scritti vengono aggiunti alla fine, dopo i dati già esistenti.
  6. Append and Read (a+ – aggiunta e lettura): usando questo metodo, puoi leggere e scrivere nel file. Se il file non esiste, ne viene creato uno. L'handle si trova alla fine del file. Il nuovo testo scritto viene aggiunto alla fine, dopo i dati già esistenti.

Di seguito c'è il codice necessario per creare, scrivere e leggere file di testo usando i metodi di gestione dei file o le modalità di accesso di Python.

Come Creare File in Python

In Python, puoi usare la funzione open() con una delle seguenti opzioni - "x" o "w" - per creare un nuovo file:

  • "x" – Creare: questo comando creerà un nuovo file se e solo se non c'è già un file esistente con lo stesso nome, altrimenti si verificherà un errore.

Esempio della creazione di un file in Python usando il comando "x":

# creazione di un file di testo con la funzione di comando "x"

f = open("myfile.txt", "x")

Adesso abbiamo creato un nuovo file vuoto! Ma se riprovi ad eseguire il codice qui sopra - per esempio, se provi a creare un nuovo file con lo stesso nome che hai usato qui sopra (se vuoi riusare il nome del file in alto), otterrai un errore che ti notifica che il file esiste già. Come nell'immagine in basso:

image-1
  • "w" – Scrivere: questo comando creerà un nuovo file di testo a prescindere dal fatto che ci sia o meno già un file in memoria con il nuovo nome specificato. Non restituirà un errore se trova un file esistente con lo stesso nome - invece, sovrascriverà il file esistente.

Esempio di come creare un file con il comando "w":

# creazione di un file di testo con la funzione di comando "w"

f = open("myfile.txt", "w")

#Questo comando "w" può anche essere usato per creare un nuovo file, ma a differenza del comando "x", il comando "w" sovrascriverà qualsiasi file esistente con lo stesso nome.

Con il codice qui sopra, sia che il file esista o che il file non esista in memoria, puoi procedere e usare il codice. Tieni a mente che sovrascriverà il file se ne trova uno già esistente con lo stesso nome.

Come Scrivere un File in Python

Ci sono due metodi per scrivere un file in Python, che sono:

Il metodo write():

Questa funzione inserisce la stringa all'interno del file di testo su una singola riga.

Prendendo come esempio il file che abbiamo creato prima, la riga di codice in basso inserirà la stringa nel nuovo file di testo creato, che è "myfile.txt".


file.write("Ciao a tutti\n")

Il metodo writelines():

Questa funzione inserisce più stringhe allo stesso tempo. Viene creata una lista di stringhe, e ogni stringa viene aggiunta al file di testo.

Usando il file creato in precedenza, la riga di codice in basso inserirà la stringa nel file di testo creato, che è "myfile.txt".

f.writelines(["Hello World ", "Benvenuti su FCC\n"])

Esempio:

#Questo programma mostra come scrivere dati in un file di testo.

file = open("myfile.txt","w")
L = ["Questa è Lagos \n","Questo è Python \n","Questo è Fcc \n"]

# ho assegnato ["Questa è Lagos \n","Questo è Python \n","Questo è Fcc \n"]
# alla variabile L, puoi usare qualsiasi lettera o parola a tua scelta.
# Le variabili sono contenitori in cui i valori possono essere immagazzinati.
# Il \n è inserito per indicare la fine di una riga

file.write("Ciao a tutti \n")
file.writelines(L)
file.close()

# Usa close() per cambiare la modalità di accesso del file

Come Leggere un File di Testo in Python

Ci sono tre metodi per leggere dati da un file di testo in Python. Ecco quali:

Il metodo read():

Questa funzione restituisce i byte letti come una stringa. Se non viene specificato nessun valore n, leggerà l'intero il file.

Esempio:

f = open("myfiles.txt", "r")
#('r’) apre il file di testo per la sola lettura
print(f.read())
#"f.read" stampa i dati nel file di testo sulla shell quando viene eseguito.

Il metodo readline():

Questa funzione legge una riga da un file e la restituisce come stringa. Legge un massimo di n bytes a seconda del valore n specificato. Ma se anche n è più grande della lunghezza della riga, non leggerà più di una riga.

f = open("myfiles.txt", "r")
print(f.readline())

Il metodo readlines():

Questa funzione legge tutte le righe e le restituisce come stringhe in una lista, una per ogni riga.

Puoi leggere le prime due righe di un file chiamando readline() due volte:

f = open("myfiles.txt", "r")
print(f.readline())
print(f.readline())

Come Chiudere un File di Testo in Python

È buona prassi chiudere sempre il file quando hai finito di lavorarci.

Esempio di chiusura di un file di testo:

Questa funzione chiude il file di testo quando hai finito di modificarlo:

f = open("myfiles.txt", "r")
print(f.readline())
f.close()

La funzione close() alla fine del codice dice a Python che ok, ho finito con questa sezione di creazione o lettura - è la stessa cosa di dire Fine.

Esempio:

Il programma qui in basso mostra più esempi di modi di leggere e scrivere dati in un file di testo. Ogni riga di codice ha dei commenti per aiutare a capire che cosa sta succedendo:

# Programma che mostra vari modi di leggere e
# scrivere dati in un file di testo.

file = open("myfile.txt","w")
L = ["Questa è Lagos \n","Questo è Python \n","Questo è Fcc \n"]

#ho assegnato ["Questa è Lagos \n","Questo è Python \n","Questo è Fcc \n"]
#alla variabile L
  
# \n è inserito per indicare la fine di una riga

file.write("Ciao a tutti \n")
file.writelines(L)
file.close()
# usa close() per cambiare la modalità di accesso del file



file = open("myfile.txt","r+") 
print("L'output della funzione Read è ")
print(file.read())
print()
  
# seek(n) prende il file handle fino all'n-esimo
# byte dall'inizio.
file.seek(0) 
  
print( "L'output della funzione Readline è ")
print(file.readline()) 
print()
  
file.seek(0)
  
# Per mostrare la differenza tra read e readline

print("L'output della funzione read(12) è ") 
print(file.read(12))
print()

file.seek(0)
  
print("L'output della funzione readline(8) è ") 
print(file.readline(8))
  
file.seek(0)
# funzione readlines
print("L'output della funzione readlines è ") 
print(file.readlines()) 
print()
file.close()

Questo è l'output del codice in alto quando viene eseguito nella shell. Ho assegnato "Questa è Lagos", "Questo è Python" e "Questo è FCC" a "L" e poi ho chiesto di stamparlo usando la funzione "file.read()".

Il codice in alto mostra che la funzione "readline()" restituisce la lettera basandosi sul numero che le viene specificato, mentre la funzione "readlines()" restituisce ogni stringa assegnata a "L", incluso il \n. Dunque, la funzione "readlines()" stamperà tutti i dati all'interno del file.

image1

Conclusione

Spero che, dopo aver letto questo tutorial, tu abbia capito che cos'è la gestione di un file in Python. Abbiamo anche imparato le modalità/i metodi necessari per creare, scrivere, leggere e chiudere un file di testo usando alcuni esempi base da Python.

Grazie per aver letto!