In python esiste la libreria CSV completa per gestire la lettura e scrittura dei file CSV, creando una lista per ogni riga del file letto ed accetando in ingresso una lista/tupla per ogni riga da scrivere.
Vediamo con un esempio la lettura di alcuni dati meteo e la conversione della temperatura da gradi celsius a gradi Fahrenheit.
Il file CSV in ingresso :

#importo la libreira csv
import csv
#funzione che converte la temperatura da celsius a Fahrenheit
def convFareneit(temp):
f = float((temp * (9/5))+32)
return round(f,1)
#carico il file
with open('datimeteo.csv') as csv_file:
#creo un oggetto iterabile contenete le righe del file
csv_reader = csv.reader(csv_file, delimiter=",")
#itero l'oggetto,converto i °celsius in Fahrenheit e salvo i dati in una lista di touple
newdataset = []
for riga in csv_reader:
tc = riga[2]
try:
tf = convFareneit(int(riga[2]))
except:
tf = tc
#creo la tupla e la metto nella lista
data = (riga[0],riga[1],tf,riga[3],riga[4])
newdataset.append(data)
#apro il nuovo file in scrittura e aggiungo la lista di touple
with open('conv_datimeteo.csv', "w", newline="") as convfile:
csv_writer = csv.writer(convfile)
for i in range(0,len(newdataset)):
csv_writer.writerow(newdataset[i])
print("fine conversione")
I commenti al codice spiegano tutto, in sostanza viene caricato il file datimeteo.csv visualizzato nell’immagine precedente, con il caricamento si ottiene un oggetto iterabile che tramite il for viene iterato riga per riga. Ad ogni iterazione il valore della temperatura che risiede nell’elemento 2 della lista cvs_reader, viene passato come argomento alla funzione convFareneit() la quale ritorna il valore di temperatura convertito.
A questo punto sempre durante l’iterazione della riga vengono copiati gli altri valori in una lista di tuple che poi useremo come fonte dati per la generazione del nuovo file CSV.
L’uso del comando try:/except ,consente allo script di non bloccarsi durante la lettura della prima riga del file dove risiedono i nomi dei campi, infatti la funzione convFareneit() tenterebbe di convertire il valore letto ‘temp’ in un numero float, generando un errore e bloccando lo script.
Alla fine dell’iterazione di tutte le righe viene creato un nuovo file CSV ed iterando la lista di touple creata con il nome di newdataset scriviamo riga per riga i nuovi valori. Il risultato nell’immagine sotto:

Il codice non e’ ottimizzato, infatti la conversione si potrebbe fare anche tramite delle funzioni comprension, ma lo scopo principale di questo articolo e’ quello di mostrare la lettura e scrittura di file CSV.












