Per iniziare: la tua prima scrittura su file in Python
Il modo più rapido per capire come si scrive su file in Python è farlo davvero. Partiamo dall’esempio più semplice e costruiamo da lì.
Il pattern di base (passo dopo passo)
Alla base, scrivere su un file segue un pattern semplice:
- Apri un file
- Scrivici del contenuto
- Chiudi il file
Python fornisce la funzione integrata open() per gestire il primo passo.
La funzione open(), spiegata in modo semplice
La funzione open() collega il tuo codice Python a un file su disco. Le dici due cose:
- Con quale file vuoi lavorare
- Come vuoi lavorarci
Per la scrittura, la modalità più comune è "w", che significa write. Se il file non esiste, Python lo crea. Se esiste, Python lo sovrascrive.
file = open("example.txt", "w")
file.write("Hello, world!")
file.close()
Esegui questo script e Python crea un file chiamato example.txt nella stessa cartella del tuo codice.
Cosa è appena successo?
-
open("example.txt", "w")apre o crea il file -
write()invia del testo nel file -
close()svuota i buffer e rilascia il file
Funziona, ma non è il modo in cui dovresti scrivere file sul lungo periodo.
Il modo giusto in Python: usare i context manager
Aprire e chiudere i file manualmente è facile da dimenticare e da sbagliare. Per questo Python incoraggia l’uso dei context manager.
Perché with è meglio: usare with garantisce che il file venga sempre chiuso correttamente, anche se qualcosa va storto durante la scrittura. Rende il codice più sicuro e più leggibile.
with open("example.txt", "w") as file:
file.write("Hello, world!")
Quando il blocco with finisce, Python chiude automaticamente il file. Questo pattern è ovunque nel codice Python professionale ed è da tenere a mente. Lo vedrai ripetutamente nel nostro skill track Python Programming e nel corso Writing Clean Python Code.
Un esempio di scrittura su file in Python
Applichiamolo a qualcosa di un po’ più realistico. Qui creerò una voce di diario giornaliera.
from datetime import date
today = date.today().isoformat()
with open("journal.txt", "a", encoding="utf-8") as file:
file.write(f"{today}: Practiced writing files in Python.\n")
Qui introduciamo due idee importanti:
-
Modalità append (
"a") -
Scrivere voci strutturate e ripetibili
-
Ogni esecuzione aggiunge una nuova riga senza eliminare le voci precedenti.
Capire le modalità di apertura: quando usare w, a, x e r+
Una volta che sai come scrivere su un file, la decisione più importante diventa come aprirlo. Le modalità di apertura controllano se i dati vengono sovrascritti, preservati o protetti.
Modalità scrittura (w): partire da zero
La modalità write crea un file se non esiste. Se esiste, lo sovrascrive.
with open("report.txt", "w") as file:
file.write("Daily sales report\n")
Usala quando vuoi una base pulita. Attenzione perché questa modalità elimina i dati esistenti senza avvisi.
Modalità append (a): aggiungere senza perdere dati
La modalità append aggiunge contenuto alla fine di un file.
with open("activity.log", "a") as file:
file.write("User logged in\n")
È ideale per log e registri incrementali ed è una delle modalità più sicure in produzione.
Modalità esclusiva (x): creazione sicura del file
La modalità esclusiva crea un file solo se non esiste già.
try:
with open("config.txt", "x") as file:
file.write("initialized=true")
except FileExistsError:
print("File already exists.")
Utile per script di setup in cui la sovrascrittura sarebbe rischiosa.
Modalità lettura-scrittura (r+): modificare file esistenti
Questa modalità consente lettura e scrittura ma richiede che il file esista.
with open("notes.txt", "r+") as file:
content = file.read()
file.write("\nNew note added.")
La scrittura avviene alla posizione corrente del puntatore del file, perciò qui è importante capire come si muove il cursore.
Quale modalità dovresti usare? Ecco la mia guida mentale:
-
Sovrascrivere dati esistenti →
w -
Conservare i dati e aggiungerne altri →
a -
Evitare sovrascritture →
x -
Leggere e aggiornare lo stesso file →
r+
Per rinforzare visivamente questo processo decisionale:

La scelta della modalità giusta in genere si riduce all’intento: sovrascrivere, accodare, proteggere o modificare.
Scrivere diversi tipi di contenuto in Python
Una volta che sai aprire i file con la modalità corretta, la domanda successiva è cosa stai effettivamente scrivendo.
Nei programmi reali non scrivi sempre una singola stringa. Potresti salvare liste, esportare risultati o lavorare con dati non testuali come immagini o PDF. In questa sezione imparerai a scrivere in modo sicuro ed efficiente diversi tipi di contenuto.
Scrivere testo e stringhe
Il caso più semplice è scrivere testo semplice. Python ti offre due metodi principali: write() e writelines().
write() scrive esattamente ciò che passi, senza a capo automatici.
with open("example.txt", "w") as file:
file.write("First line\n")
file.write("Second line\n")
write() vs. writelines()
La differenza chiave è semplice: write() scrive una stringa alla volta, mentre writelines() scrive una sequenza di stringhe così com’è; writelines() non aggiunge a capo per te, quindi ogni elemento deve già terminare con \n.
In pratica, molti sviluppatori preferiscono comunque write() in un ciclo perché più leggibile.
lines = ["One\n", "Two\n", "Three\n"]
with open("example.txt", "w") as file:
file.writelines(lines)
Scrivere liste in modo efficiente
items = ["apple", "banana", "cherry"]
content = "\n".join(items)
with open("fruits.txt", "w") as file:
file.write(content)
Fare il join prima riduce le scritture ripetute su disco, cosa che conta con dataset più grandi.
Scrivere dati binari
La modalità binaria ("wb") è necessaria per i file non testuali.
binary_data = b"\x89PNG\r\n\x1a\n"
with open("image.bin", "wb") as file:
file.write(binary_data)
Lavorare con le codifiche in Python (perché il tuo testo appare corrotto)
I problemi di codifica sono tra i bug più comuni — e frustranti — nella gestione dei file.
Specifica sempre UTF-8
Una codifica esplicita evita problemi tra piattaforme e caratteri corrotti, come puoi vedere qui:
with open("example.txt", "w", encoding="utf-8") as file:
file.write("Café, résumé, naïve")
Esempio reale: testo multilingue
Essere espliciti qui ti risparmia ore di debug più avanti. Ecco cosa intendo:
customers = ["Ana García", "François Dupont", "Miyuki 山田"]
with open("customers.txt", "w", encoding="utf-8") as file:
for name in customers:
file.write(name + "\n")
Tecniche avanzate di scrittura in Python
Una volta che ti senti a tuo agio a scrivere file in Python, i problemi successivi di solito non riguardano come scrivere, ma come farlo in modo sicuro ed efficiente. File grandi, crash imprevisti e colli di bottiglia prestazionali introducono casi limite che non abbiamo ancora trattato.
Gestire file grandi con scritture a blocchi
Lo streaming dell’output mantiene basso l’uso di memoria:
def generate_lines():
for i in range(1_000_000):
yield f"Line {i}\n"
with open("large.txt", "w", encoding="utf-8") as file:
for line in generate_lines():
file.write(line)
Scritture atomiche: prevenire la corruzione
L’idea qui è evitare scritture parziali se un programma si arresta a metà aggiornamento.
import os, tempfile
def atomic_write(path, content):
with tempfile.NamedTemporaryFile("w", delete=False) as tmp:
tmp.write(content)
os.replace(tmp.name, path)
Oltre i file di testo: scrivere JSON e CSV
Quando i tuoi dati hanno struttura, il testo semplice smette di essere l’opzione migliore. Python semplifica la scrittura di formati strutturati comuni come JSON e CSV, così puoi archiviare i dati in un modo più facile da condividere, ispezionare ed elaborare in seguito.
Scrivere JSON
Quando lavori con dizionari o dati annidati, JSON è di solito il formato più naturale da usare. Il modulo json integrato in Python gestisce la conversione per te, così non devi formattare manualmente le stringhe.
import json
data = {"id": 1, "name": "Jeremiah"}
with open("user.json", "w", encoding="utf-8") as file:
json.dump(data, file, indent=2)
Scrivere CSV
Se i tuoi dati sono tabellari e probabilmente verranno aperti in fogli di calcolo o strumenti BI, il CSV è una scelta migliore. Il modulo csv ti aiuta a scrivere le righe in sicurezza senza preoccuparti di delimitatori o virgolette.
import csv
rows = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]
with open("users.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=["id", "name"])
writer.writeheader()
writer.writerows(rows)
Errori comuni quando si scrive su file in Python
Anche se scrivere file in Python è semplice, pochi piccoli errori causano la maggior parte dei problemi reali. Di solito non si tratta di sintassi; derivano da dettagli trascurati come gestione delle risorse, modalità del file o scelte prestazionali.
Tieni a mente i seguenti punti.
-
Dimenticare di chiudere i file → usa
‘with’ -
Sovrascrivere dati involontariamente → ricontrolla le modalità
-
Ignorare la codifica → specifica sempre UTF-8
-
Scrivere file grandi in modo inefficiente → fai batch o esegui lo streaming dell’output
La maggior parte dei bug qui deriva da piccole sviste, non da logica complessa.
Conclusione
Scrivere su file in Python parte in modo semplice, ma i programmi reali richiedono più attenzione. In questa guida sei passato dalla tua prima scrittura su file alla scelta di modalità sicure, alla gestione corretta delle codifiche, all’esportazione di dati strutturati e all’applicazione di pattern pronti per la produzione.
La lezione chiave è l’intento: scegli la modalità giusta, sii esplicito sulla codifica e scrivi in modo difensivo quando i dati contano.

Technical writer specializzato in AI, ML e data science: rende idee complesse chiare e accessibili.
FAQ
Python può scrivere file in modo asincrono?
Sì, con librerie come aiofiles, anche se la maggior parte degli script non ne ha bisogno.
Qual è la modalità di scrittura più sicura?
Append ("a") o esclusiva ("x") a seconda dell’intento.
Perché il mio testo è corrotto?
Mismatch di codifica: usa sempre UTF-8.
Dove viene salvato il mio file?
Rispetto alla directory di lavoro dello script.
Dovrei usare pathlib?
Sì, per una gestione dei percorsi più pulita e multipiattaforma.


Prima o poi, ogni programma Python deve salvare qualcosa: log, risultati, input dell’utente, file di configurazione o dati elaborati. Potresti esportare i risultati di un’analisi, registrare cosa ha fatto il tuo script o mantenere lo stato dell’app tra un’esecuzione e l’altra. In ogni caso, scrivere su file è una competenza fondamentale di Python che userai di continuo.
In questa guida imparerai a scrivere su file in Python usando la libreria standard. Partiremo dalle basi, poi vedremo le modalità di apertura, le codifiche, i formati strutturati come JSON e CSV e pattern pronti per la produzione che rendono il codice più sicuro e prevedibile. Alla fine saprai scrivere file con sicurezza in applicazioni reali, non solo in esempi da manuale.
Se hai già dimestichezza con le basi di Python, questo tutorial ti aiuta a colmare il divario tra script e gestione dei file a livello professionale. Se vuoi rinforzare i fondamentali man mano che procedi, i nostri corsi Introduction to Python e Intermediate Python si abbinano bene a questa guida.