On dispose de données, formatées selon les normes « csv » par exemple et on souhaite les conserver dans un fichier. Quelle est la marche à suivre dans un environnement de programmation Python ?
Soit les données formatées suivantes :
csv_text = 'Prénom,NOM,Date de naissance (AAAA-MM-JJ ou YYYY-MM-DD)\r\nAbel,Auboisdormant,2002-12-10\r\nAlain,Provist,2004-01-14\r\nAndré,Naline,2003-04-05\r\nCéline,Évitable,1997-06-23'
Etape 1 – « Ouvrir » une ressource (flux)
csv_sauvegarde = open("csv_data.csv", mode="w", encoding="UTF-8")
Syntaxe minimaliste : ressource = open( nomDeFichier, mode=?, encoding= »? »)
Cette étape consiste à créer une ressource nommée par « nomDeFichier » sous la forme d’un flux.
« nomDeFichier » est le seul paramètre obligatoire. Il existe une valeur par défaut pour tous les autres.
- « nomDeFichier » est de type « chaîne de caractères » (str). Il est choisi par le programmeur.
- la paramètre mode indique un type d’accès pour le flux de données. Il peut prendre différentes valeurs :
- « r » qui est la valeur par défaut, ouvre en lecture ;
- « w » ouvre en écriture dans une ressource « vide » (autrement dit si « nomDeFichier » correspond à une ressource déjà existante, son contenu sera « écrasé » (= supprimé et remplacé) ;
- le paramètre encoding prend la valeur de celui du système d’exploitation par défaut.
Etape 2 – Ecrire dans la ressource
csv_sauvegarde.write(datas)
Syntaxe de la méthode write() : ressource.write(datas)
Le paramètre datas est de type ‘str’ ou de type ‘bytes’. Les autres types doivent être convertis.
Convertir une table en chaîne de caractères formatée selon la norme ‘csv’.
L’opération s’appelle « sérialisation ».
Soit T la table à convertir : il s’agit d’une liste de listes.
La conversion peut s’effectuer avec la méthode « separateur.join(T) »
# T : table ; liste de listes # nE : nombre d'enregistrements de 'T' # sv : séparateur de valeurs d'un enregistrement ; virgule ou point-virgule ou tabulation # se : séparateur de d'enregistrements ; LF (Line Feed) sv = ";" # ou sv = "," ou sv = chr(9) se = chr(10) # Sérialisation des valeurs des enregistrements for index in range(nE): enregistrement = T[index] enregistrement = sv.join(enregistrement) T[index] = enregistrement # T est maintenant une liste de chaînes de caractères # Sérialisation des enregistrements T = se.join(T)
Etape 3 – Fermer la ressource
csv_sauvegarde.close()
Syntaxe de la méthode close() : ressource.close()
Le fichier est enregistré – par défaut – au même niveau de l’arborescence du système de fichiers que celui où se trouve le programme en Python contenant les instructions précédentes.