N.S.I. WorkSpace Compétence,P-Th-C,Première C1c – Compétence | Sauvegarder les données d’une table dans un fichier csv

C1c – Compétence | Sauvegarder les données d’une table dans un fichier csv

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.
Pour de plus amples informations sur les paramètres, se reporter à la documentation officielle

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.

Article sous licence << Cliquez pour plus d’informations <<