File
- #python
- #programmazione
- #file
- #lettura
- #scrittura
In questa lezione
- 1. Introduzione
- 2. Aprire un file
- 2.1 Esempio apertura file
- 3. Chiudere un file
- 4. Leggere un file
- 4.1 Altri metodi di lettura
- 5. Scrivere un file
- 5.1 Aggiungere (append) al file
- 6. Proprietà di un file
- 7. With Statement
- 8. Gestione eccezioni durante la chiusura di un file
- 9. Esercizi
- 9.1 Esercizio - Lettura File
- 9.2 Esercizio - Scrittura su File
- 9.3 Esercizio - Copia di File
1. Introduzione
In Python è possibile effettuare operazioni sui file, come aprirli, crearli, scriverli, leggerli e chiuderli.
Perché è utile lavorare con i file?
- Per salvare informazioni in modo persistente, anche dopo la terminazione del programma.
- Per automatizzare processi, come la lettura di configurazioni o il salvataggio dell’output di un programma.
- Per accedere a file esterni come
.txt,.csv,.json,.yaml, ecc.
2. Aprire un file
Per aprire un file si utilizza la funzione integrata open().
Sintassi:
file = open("percorso_file.txt", "modalità")
dove:
percorso_file.txt: il percorso del file da aprire;modalità: specifica cosa si vuole fare (leggere, scrivere, ecc.).
| Modalità | Descrizione |
|---|---|
| r | read - Permette di leggere il contenuto di un file. Solleva errore se il file non esiste. |
| w | write - Per scrivere su un file. Se il file esiste già, viene sovrascritto. |
| a | append - Scrive in fondo al file senza sovrascriverlo. |
2.1 Esempio apertura file
file = open("test.txt", "r")
print(file)
Attenzione
Se si cerca di aprire un file che non esiste, Python solleva un’eccezione: FileNotFoundError.
3. Chiudere un file
Quando si lavora con file, è importante chiuderli dopo l’utilizzo per liberare risorse.
Per chiudere un file in python si usa la funzione file.close().
Esempio:
file = open("test.txt", "r")
file.close()
4. Leggere un file
Per leggere il contenuto di un file, si usa file.read().
Esempio:
file = open("test.txt", "r")
content = file.read()
print(content)
file.close()
4.1 Altri metodi di lettura
file.readline()legge una singola riga alla volta.file.readlines()restituisce una lista di tutte le righe del file.
Esempio:
file = open("test.txt", "r")
for riga in file.readlines():
print(riga.strip())
file.close()
5. Scrivere un file
Per scrivere in un file in python, occorre utilizzare la funzione file.write().
Esempio:
file = open("nuovo_file.txt", "w")
file.write("Ciao mondo!\n")
file.write("Questo è un secondo messaggio.")
file.close()
Attenzione
Aprendo un file con "w", se il file esiste già, il contenuto verrà cancellato.
5.1 Aggiungere (append) al file
Per scrivere senza sovrascrivere:
file = open("nuovo_file.txt", "a")
file.write("\nAggiunta di una nuova riga.")
file.close()
6. Proprietà di un file
Python mette a disposizione anche alcune funzioni che permettono di leggere alcune proprietà di un file dopo la sua apertura:
file = open("test.txt", "r")
print(f"NomeFile: {file.name}")
print(f"Modalità: {file.mode}")
print(f"Chiuso?: {file.closed}")
file.close()
dove:
file.name: restuituisce il nome del file.file.mode: restituisce la modalità di apertura (r,w,a).file.closed: restituisceTruese il file è chiuso,Falsese è aperto.
7. With Statement
L’istruzione with permette di gestire automaticamente l’apertura e la chiusura dei file, anche in caso di errore.
Esempio:
with open("test.txt", "r") as file:
contenuto = file.read()
print(contenuto)
# Il file viene chiuso automaticamente qui
Nota
Usare with è una buona pratica perché evita dimenticanze nella chiusura dei file.
8. Gestione eccezioni durante la chiusura di un file
Quando si lavora con file esterni, possono verificarsi errori (file mancanti, permessi negati, ecc.).
È buona norma gestirli con try-except.
Esempio:
try:
with open("inesistente.txt", "r") as file:
contenuto = file.read()
print(contenuto)
except FileNotFoundError:
print("Errore: il file non esiste!")
except PermissionError:
print("Errore: permessi insufficienti per leggere il file.")
else:
print("File letto correttamente.")
finally:
print("Operazione terminata.")
9. Esercizi
9.1 Esercizio - Lettura File
Scrivi un programma che:
- chieda all’utente il nome di un file;
- apra e mostri il suo contenuto;
- gestisca con
try-exceptl’eventuale erroreFileNotFoundError.
Punti extra:
- Crea una classe
LettoreFilecon un metodoleggi_file(nome_file)che:- apra il file in modalità lettura;
- gestisca eccezioni come
FileNotFoundErrorePermissionError; - stampi messaggi di log informativi (es. “File trovato”, “File non trovato”).
9.2 Esercizio - Scrittura su File
Crea un programma che:
- chieda all’utente una frase;
- salvi la frase in un file chiamato
frasi.txt; - utilizzi il blocco
withper la gestione del file.
Punti extra:
-
Crea una classe
GestoreFileche contenga:- un metodo
scrivi_testo(file, testo)per scrivere il testo nel file specificato; - un metodo
leggi_testo(file)per leggerne il contenuto e mostrarlo a video.
- un metodo
-
All’interno dei metodi, utilizza il blocco
try-exceptper gestire eventuali errori:FileNotFoundErrorse il file non esiste;PermissionErrorse non si hanno i permessi di scrittura o lettura;- eventuali altri errori generici con un messaggio chiaro per l’utente.
-
Al termine dell’esecuzione, mostra un messaggio di conferma se la scrittura è andata a buon fine oppure un messaggio di errore personalizzato in caso contrario.
9.3 Esercizio - Copia di File
Scrivi un programma che:
- legga un file di testo chiamato
origine.txt; - copi il contenuto in un nuovo file chiamato
copia.txt; - utilizzi il costrutto
withper entrambe le operazioni; - gestisca eventuali errori con
try-except.
Punti extra:
-
Crea una classe
FileManagerche includa:- un metodo
copia_file(orig, dest)che legga il contenuto del file sorgente e lo copi nel file di destinazione; - la registrazione dell’esito dell’operazione
- un metodo
-
Quiz a risposta multipla
Mettiti alla prova
0/10 risposte
1) Qual è la funzione usata per aprire un file in Python?
2) Cosa fa la modalità 'w' nella funzione open()?
3) Qual è il vantaggio principale dell'uso di 'with' per aprire un file?
4) Quale metodo legge tutto il contenuto di un file?
5) Cosa succede se si apre un file inesistente in modalità 'r'?
6) Come si scrive una riga di testo in un file?
7) Quale di queste è una buona pratica nella gestione dei file?
8) Quale proprietà di un file indica se è chiuso?
9) Qual è il metodo per leggere una singola riga da un file?
10) Cosa fa la modalità 'a' in open()?