🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Scrittura di File in Python

Codegrind TeamSep 11 2024

La scrittura di file in Python è una delle operazioni più comuni quando si lavora con dati, che si tratti di esportare report, salvare risultati o manipolare file di testo e binari. Python offre una serie di metodi per scrivere file, sia in modalità di testo che binaria. In questo articolo esploreremo come aprire, scrivere e gestire file in modo efficiente.

1. Aprire un File per la Scrittura

Per scrivere su un file in Python, il primo passo è aprire il file utilizzando la funzione open(), specificando la modalità di apertura. La modalità comune per la scrittura è w (scrittura) o a (append).

Sintassi di Base

file = open('nome_file.txt', 'w')
  • 'w': Scrittura. Se il file esiste, viene sovrascritto. Se non esiste, viene creato.
  • 'a': Append. Se il file esiste, il contenuto viene aggiunto alla fine del file. Se non esiste, viene creato.
  • 'x': Creazione esclusiva. Crea un nuovo file, ma solleva un errore se il file esiste già.

Per file binari, aggiungi una b alla modalità ('wb', 'ab', ecc.).

2. Scrivere su un File di Testo

Una volta aperto il file, puoi usare il metodo write() per scrivere una stringa nel file. Dopo aver completato le operazioni di scrittura, è importante chiudere il file per liberare le risorse.

Esempio di Scrittura di Testo

# Apri un file in modalità di scrittura
with open('esempio.txt', 'w') as file:
    file.write('Ciao, mondo!\n')
    file.write('Questo è un file di testo scritto in Python.\n')

# Il file viene chiuso automaticamente grazie al blocco "with"

Output (contenuto di esempio.txt):

Ciao, mondo!
Questo è un file di testo scritto in Python.

Scrivere più Linee con writelines()

Se hai una lista di stringhe, puoi usare writelines() per scriverle tutte insieme nel file.

linee = ['Prima linea\n', 'Seconda linea\n', 'Terza linea\n']

with open('esempio.txt', 'w') as file:
    file.writelines(linee)

Il Blocco with

Nell’esempio precedente, abbiamo usato il blocco with, che gestisce automaticamente l’apertura e la chiusura del file. Utilizzare with è una best practice, poiché assicura che il file venga chiuso correttamente, anche in caso di errori.

3. Modalità di Append

Se vuoi aggiungere nuovi contenuti a un file esistente senza sovrascriverlo, puoi aprire il file in modalità append ('a').

Esempio di Append

with open('esempio.txt', 'a') as file:
    file.write('Aggiungo una nuova linea al file.\n')

Output (contenuto di esempio.txt dopo l’append):

Prima linea
Seconda linea
Terza linea
Aggiungo una nuova linea al file.

4. Scrivere File Binari

Per scrivere file binari (ad esempio immagini o dati non testuali), devi aprire il file in modalità binaria usando 'wb'.

Esempio di Scrittura Binaria

dati_binari = bytes([120, 3, 255, 0, 100])

with open('esempio_binario.bin', 'wb') as file:
    file.write(dati_binari)

In questo esempio, scriviamo una sequenza di byte in un file binario.

5. Gestire Eccezioni durante la Scrittura

Durante la scrittura dei file, potrebbero verificarsi errori come la mancanza di permessi o problemi con il file system. È importante gestire tali errori per evitare che il programma si arresti in modo inaspettato.

Esempio di Gestione delle Eccezioni

try:
    with open('esempio.txt', 'w') as file:
        file.write('Scrittura sicura nel file.')
except IOError:
    print('Si è verificato un errore durante la scrittura del file.')

In questo caso, se si verifica un errore durante l’apertura o la scrittura del file, viene sollevata un’eccezione IOError che può essere gestita per prevenire crash del programma.

6. Scrittura con Codifica Personalizzata

Python utilizza la codifica UTF-8 per i file di testo per impostazione predefinita, ma puoi specificare una codifica diversa con il parametro encoding.

Esempio con Codifica UTF-16

with open('esempio_utf16.txt', 'w', encoding='utf-16') as file:
    file.write('Testo codificato in UTF-16.')

7. Scrittura di File JSON

Se stai lavorando con dati strutturati, Python offre il modulo json per scrivere e leggere file JSON. Puoi convertire un dizionario o una lista Python in formato JSON con json.dump().

Esempio di Scrittura di File JSON

import json

dati = {
    'nome': 'Alice',
    'età': 25,
    'città': 'Roma'
}

with open('dati.json', 'w') as file:
    json.dump(dati, file)

Output (contenuto di dati.json):

{
  "nome": "Alice",
  "età": 25,
  "città": "Roma"
}

8. Scrittura di File CSV

Per scrivere file CSV (valori separati da virgola), Python offre il modulo csv, che semplifica la gestione di file con dati tabulari.

Esempio di Scrittura di File CSV

import csv

dati = [
    ['Nome', 'Età', 'Città'],
    ['Marco', 30, 'Milano'],
    ['Giulia', 22, 'Firenze'],
    ['Luca', 28, 'Napoli']
]

with open('persone.csv', 'w', newline='') as file:
    scrittore = csv.writer(file)
    scrittore.writerows(dati)

Output (contenuto di persone.csv):

Nome,Età,Città
Marco,30,Milano
Giulia,22,Firenze
Luca,28,Napoli

9. Migliorare le Performance della Scrittura

Quando lavori con file di grandi dimensioni o operazioni ripetitive, puoi migliorare le prestazioni della scrittura:

  • Buffering: Usa il parametro buffering nella funzione open() per controllare il comportamento di buffering.
  • Scrittura in Blocchi: Scrivere in blocchi di dati anziché riga per riga può migliorare le prestazioni.

Esempio di Scrittura in Blocchi

blocchi_di_dati = ['Blocco 1\n', 'Blocco 2\n', 'Blocco 3\n']

with open('file_grande.txt', 'w') as file:
    file.writelines(blocchi_di_dati)

Conclusione

La scrittura di file in Python è un’operazione semplice e flessibile, con supporto per file di testo e binari, codifiche diverse e formati strutturati come JSON e CSV. Usare le tecniche corrette per gestire i file, come l’uso del blocco with, e le modalità di apertura adeguate ti permette di scrivere file in modo efficiente e sicuro.