Sostieni AppuntiFacili con una piccola donazione su PayPal

Dona con PayPal
AppuntiFacili
Torna Indietro Segnala errore

File

✍️ Dennis Turco 🏷️ Informatica 📘 Python
Ultima modifica:
#python#programmazione#file#lettura#scrittura

1. Introduzione

In Python è possibile effettuare operazioni sui file, come aprirli, crearli, scriverli, leggerli e chiuderli.

Perché è utile lavorare con i file?

  1. Per salvare informazioni in modo persistente, anche dopo la terminazione del programma.
  2. Per automatizzare processi, come la lettura di configurazioni o il salvataggio dell’output di un programma.
  3. 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
rread - Permette di leggere il contenuto di un file. Solleva errore se il file non esiste.
wwrite - Per scrivere su un file. Se il file esiste già, viene sovrascritto.
aappend - Scrive in fondo al file senza sovrascriverlo.

2.1 Esempio apertura file

file = open("test.txt", "r")
print(file)

WARNING

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() \rightarrow legge una singola riga alla volta.
  • file.readlines() \rightarrow 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()

WARNING

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: restituisce True se il file è chiuso, False se è 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

INFO

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:

  1. chieda all’utente il nome di un file;
  2. apra e mostri il suo contenuto;
  3. gestisca con try-except l’eventuale errore FileNotFoundError.

Punti extra:

  • Crea una classe LettoreFile con un metodo leggi_file(nome_file) che:
    • apra il file in modalità lettura;
    • gestisca eccezioni come FileNotFoundError e PermissionError;
    • stampi messaggi di log informativi (es. “File trovato”, “File non trovato”).

9.2 Esercizio - Scrittura su File

Crea un programma che:

  1. chieda all’utente una frase;
  2. salvi la frase in un file chiamato frasi.txt;
  3. utilizzi il blocco with per la gestione del file.

Punti extra:

  1. Crea una classe GestoreFile che 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.
  2. All’interno dei metodi, utilizza il blocco try-except per gestire eventuali errori:

    • FileNotFoundError se il file non esiste;
    • PermissionError se non si hanno i permessi di scrittura o lettura;
    • eventuali altri errori generici con un messaggio chiaro per l’utente.
  3. 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:

  1. legga un file di testo chiamato origine.txt;
  2. copi il contenuto in un nuovo file chiamato copia.txt;
  3. utilizzi il costrutto with per entrambe le operazioni;
  4. gestisca eventuali errori con try-except.

Punti extra:

  1. Crea una classe FileManager che 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
  2. Quiz a risposta multipla

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()?

Prenota una lezione