Contexte
Les différentes activités réalisées jusqu'à maintenant ne permettaient pas de sauvegarder les données dans un fichier.
En effet, lorsque python traite des données, elles sont mémorisées dans la mémoire vive (RAM) de l'ordinateur et sont perdues dès que l'IDE python est fermé.
Dans cette activité, vous allez apprendre à lire et écrire dans un fichier CSV et à mémoriser ces informations en python.
Rappel CSV : Comma-separated values
Préparation du travail
Vous devez avoir le fichier CSV et le fichier python dans le même dossier :
- Créer un nouveau dossier python : Traitement données en table.
- Télécharger le fichier ExempleTableCsv1.csv et placer le répertoire précédemment créé.
Pour mémoire votre fichier peut s'ouvrir avec un tableur ou un éditeur de texte :
Aperçu dans un tableur |
Aperçu dans un éditeur de texte |
Lire des donnée d'un fichier CSV
Tester le code suivant :
#--importation bibliothèque csv
import csv
#--Documentation : https://docs.python.org/fr/3/library/csv.html
#=====Définition des fonctions==========================================
#-----------Fonction importation d'un fichier CSV
#fichier : nom du fichier à lire
def import_csv(fichier):
#fichier est le nom du fichier sans extension
#open(fichier+ '.csv','r') : ouvrir le fichier
#dont l'extension est '.csv' en mode lecture 'r' comme read
lecteur = csv.DictReader(open(fichier + '.csv','r'))
return [dict(ligne) for ligne in lecteur]
#======Programme principal=============================================
#---essai d'importation d'un fichier CSV existant
NoteEleve= import_csv('ExempleTableCsv1')
print(NoteEleve)
Exercices
a- Quel est le type de donnée de NoteEleve ?
b- Comment s'appelle l'écriture de la ligne 13 ?
c- Proposer une écriture avec des boucles for...in... de cette ligne 13.
Ecrire dans un fichier CSV
Ecriture en vidant le fichier avant
Tester le code suivant :
#--importation bibliothèque csv
import csv
#--Documentation : https://docs.python.org/fr/3/library/csv.html
#=====Définition des fonctions==========================================
#-----------Fonction importation d'un fichier CSV
#fichier : nom du fichier à lire
def import_csv(fichier):
#fichier est le nom du fichier sans extension
#open(fichier+ '.csv','r') : ouvrir le fichier
#dont l'extension est '.csv' en mode lecture 'r' comme read
lecteur = csv.DictReader(open(fichier + '.csv','r'))
return [dict(ligne) for ligne in lecteur]
#------------Fonction exportation dans un fichier CSV
#nom : chaine de caractères du nom du fichier
#et aussi grâce à eval(nom) la liste de dictionnaire
#ordre : liste des attributs (ou labels) des colonnes
def export_csv(nom,ordre):
#ouverture du fichier en écriture 'w' comme write enécrasant les données précédentes
with open(nom+'.csv','w') as fichier:
#prépare l'écriture dans le fichier
dic= csv.DictWriter(fichier,fieldnames=ordre)
#eval(nom) permet d'interpréter nom comme une variable et non comme une string
table= eval(nom)
#---écriture de la 1ère ligne du fichier CSV : les attributs
dic.writeheader()
#---boucle pour chaque dictionnaire
for ligne in table:
#écriture de chaque dictionnaire dans une nouvelle ligne du fichier
dic.writerow(ligne)
#======Programme principal=============================================
#---importation d'un fichier CSV existant
NoteEleve= import_csv('ExempleTableCsv1')
print(NoteEleve)
#---essai d'exportation d'une liste de dictionnaire
export_csv('NoteEleve',['Nom','Maths','Anglais','Info'])
Vérifier que le contenu du fichier NoteEleve.csv est :
d- En examinant le commentaire de la ligne 20 et de la documentation de la bibliothèque CSV, que faudrait-il comme paramètre d'accès au fichier pour écrire à la fin du fichier afin d'ajouter d'autres élèves ?
Ecriture en ajoutant les informations à la fin du fichier
Compléter alors le code de la fonction ajout_export_csv() afin que le tableau eleve soit ajouter à la fin du fichier NoteEleve.
#--importation bibliothèque csv
import csv
#--Documentation : https://docs.python.org/fr/3/library/csv.html
#--données élèves à ajouter
eleve=[{'Nom': 'Jules', 'Anglais': '11', 'Info': '13', 'Maths': '7'}]
#=====Définition des fonctions==========================================
#------------Fonction ajout exportation dans un fichier CSV
#nomFichier : chaine de caractères du nom du fichier
#nomTab : tableau de dictionnaires des notes des élèves à ajouter
#ordre : liste des attributs (ou labels) des colonnes
def ajout_export_csv(nomFichier,nomTab,ordre):
...
...
...
#======Programme principal=============================================
#---essai d'exportation d'une liste de dictionnaire
ajout_export_csv('NoteEleve','eleve',['Nom','Maths','Anglais','Info'])
Lancer le programme et vérifier que le contenu du fichier NoteEleve.csv est :
Vous pouvez tester l'ajout des notes de 2 élèves afin de vérifier qu'elles sont bien enregistrées dans le fichier NoteEleve.csv.