Bonjour,
Admettons que le fichier csv, appelé 'fichier.csv', mis à jour le mois précédent contienne:
;Aout;Septembre
CompteurX;50;47
CompteurY;35;39
CompteurZ;12;18
On veut ajouter la colonne: ["Octobre", 45, 41, 21]
1- lire le fichier csv:
1 2 3 4 5 6 7
| import csv
with open('fichier.csv', 'rb') as f:
fcsv = csv.reader(f, delimiter=';', dialect=csv.excel)
tableau = []
for ligne in fcsv:
tableau.append(ligne) |
La variable tableau contient alors (c'est la liste des lignes):
[['', 'Aout', 'Septembre'], ['CompteurX', '50', '47'], ['CompteurY', '35', '39'], ['CompteurZ', '12', '18']]
2- on ajoute le mois suivant:
1 2 3
| nouvmois = ["Octobre", 45, 41, 21]
for i in xrange(0, len(tableau)):
tableau[i].append("%s" % nouvmois[i]) |
tableau contient alors:
[['', 'Aout', 'Septembre', 'Octobre'], ['CompteurX', '50', '47', '45'], ['CompteurY', '35', '39', '41'], ['CompteurZ', '12', '18', '21']]
3- écrire le nouveau fichier ainsi mis à jour:
1 2 3 4
| with open('fichier.csv', 'wb') as f:
fcsv = csv.writer(f, delimiter=';', dialect=csv.excel)
for ligne in tableau:
fcsv.writerow(ligne) |
Le nouveau fichier contient alors:
;Aout;Septembre;Octobre
CompteurX;50;47;45
CompteurY;35;39;41
CompteurZ;12;18;21
Sous Windows, un simple double-clic ouvre ce fichier sous Excel. Mais s'il faut travailler dessus, il faudra probablement l'ouvrir en tant que tableau dans un classeur.
A noter qu'Excel reconnait automatiquement les nombres entiers, même quand ils sont envoyés sous forme de chaines: ils se calent à droite de la colonne alors que les chaines se calent à gauche. C'est vrai aussi pour les nombres flottants, à condition de les envoyer sous forme de chaines avec une virgule décimale au lieu du point.
Ok?
Partager