💾 Perché gestire i file?
La gestione dei file in Python è un aspetto fondamentale della programmazione, permettendo di leggere, scrivere e modificare dati in modo persistente. I file vengono utilizzati per conservare informazioni tra le esecuzioni di un programma, evitando la perdita di dati.
⚙️ Configurazione
Salvataggio di dati di configurazione e preferenze utente
📊 Logging
Registrazione di eventi e attività del programma
📋 Dati Strutturati
Manipolazione di file CSV, JSON e XML
🔢 File Binari
Lettura e scrittura di immagini, audio e altri file binari
🔓
Apertura e Chiusura dei File
L’accesso ai file in Python avviene tramite la funzione open(), che richiede il percorso del file e una modalità di apertura.
⚠️ Metodo Tradizionale (Non Raccomandato):
Richiede la chiusura manuale del file con close()
file = open("esempio.txt", "r") # Apertura in lettura
contenuto = file.read()
file.close() # ⚠️ Chiusura manuale necessaria!
✅ Metodo Raccomandato: Context Manager
Utilizza with per gestire automaticamente l’apertura e la chiusura del file
with open("esempio.txt", "r") as file:
contenuto = file.read()
# Il file viene chiuso automaticamente all'uscita dal blocco! ✅
with?
- Chiusura automatica del file anche in caso di errori
- Codice più pulito e leggibile
- Gestione corretta delle risorse di sistema
🎛️
Modalità di Apertura
Python offre diverse modalità per aprire i file, ognuna con uno scopo specifico:
📌 Nota Importante:
La modalità w cancella completamente il contenuto esistente. Per aggiungere dati, usa a!
✍️
Lettura e Scrittura
Python fornisce diversi metodi per interagire con i file, ognuno ottimizzato per casi d’uso specifici:
📖 Metodi di Lettura
read()– legge tutto il contenuto del filereadline()– legge una singola riga alla voltareadlines()– restituisce una lista di tutte le righe
✍️ Metodi di Scrittura
write()– scrive una stringa nel filewritelines()– scrive una lista di stringhe
📝 Esempio: Scrittura in un File
with open("esempio.txt", "w") as file:
file.write("Questo è un nuovo testo\n")
file.write("Seconda riga di testo\n")
# File salvato e chiuso automaticamente! ✅
📖 Esempio: Lettura Riga per Riga
with open("esempio.txt", "r") as file:
for riga in file:
print(riga.strip()) # strip() rimuove spazi e \n
# Output:
# Questo è un nuovo testo
# Seconda riga di testo
💡 Best Practice:
Per file di grandi dimensioni, è preferibile leggere riga per riga piuttosto che caricare tutto in memoria con read(). Questo approccio è più efficiente e previene problemi di memoria.
🔄 Esempio: Lettura Completa del File
# Metodo 1: Tutto in una stringa
with open("esempio.txt", "r") as file:
contenuto = file.read()
print(contenuto)
# Metodo 2: Lista di righe
with open("esempio.txt", "r") as file:
righe = file.readlines()
for riga in righe:
print(riga.strip())
⚠️
Gestione degli Errori
Durante la manipolazione dei file possono verificarsi vari errori: file inesistenti, permessi insufficienti, disco pieno, ecc. È fondamentale gestirli correttamente con try-except.
🚨 Errori Comuni:
- FileNotFoundError: Il file specificato non esiste
- PermissionError: Permessi insufficienti per accedere al file
- IOError: Errore generico di input/output
- IsADirectoryError: Si sta tentando di aprire una cartella come file
try:
with open("esempio.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.")
except IOError as e:
print(f"❌ Errore di lettura/scrittura: {e}")
else:
print("✅ File letto con successo!")
finally:
print("🔚 Operazione completata.")
💡 Struttura Completa:
- try: Codice che potrebbe generare errori
- except: Gestione degli errori specifici
- else: Eseguito solo se NON ci sono errori
- finally: Eseguito sempre, con o senza errori
🛡️ Esempio: Scrittura Sicura
def scrivi_file_sicuro(nome_file, contenuto):
try:
with open(nome_file, "w") as file:
file.write(contenuto)
return True, "✅ File scritto con successo"
except PermissionError:
return False, "❌ Permessi insufficienti"
except IOError as e:
return False, f"❌ Errore: {e}"
# Utilizzo
successo, messaggio = scrivi_file_sicuro("dati.txt", "Hello World!")
print(messaggio)
🚀 Vuoi Approfondire?
Questa panoramica copre le basi della gestione dei file in Python. Per tecniche avanzate come la gestione di file binari, CSV e JSON, continua il tuo percorso!
📊 File CSV
Impara a manipolare dati tabulari e fogli di calcolo
🗂️ File JSON
Gestisci dati strutturati in formato JSON
🖼️ File Binari
Lavora con immagini, audio e video
📂 Gestione Path
Manipola percorsi e cartelle con pathlib