====== Lire données ====== Dans [[bts:python:stocker_valeurs|Stocker un tableau de valeur dans un fichier]], on voit comment **stocker des valeurs** dans un fichier ''.csv''. Ici, on fait l'inverse : on lit les données stockées dans un fichier ''.csv'' venant d'ailleurs. Par exemple le fichier ''.csv'' pourrait avoir été produit par un capteur (Arduino par exemple) ou avoir été récupéré sur internet. On supposera ici que nous disposons d'un fichier ''data.csv'' contenant à chaque ligne une valeur ''x'' suivie d'une valeur ''y'' après une virgule. Par exemple : 0.0,0.00012340980408667956 0.10101010101010101,0.00022393775270322926 0.20202020202020202,0.00039814633279967626 0.30303030303030304,0.0006935789052571739 0.40404040404040403,0.0011838230273274724 0.5050505050505051,0.001979773207804922 0.6060606060606061,0.003244007528924179 Vous pouvez télécharger {{ :bts:python:data.csv |}}. {{page>bts:python:start#Préalable&noheader&inline}} ===== Ouverture du fichier ===== f = open('data.csv', 'r') # en mode lecture contenu = f.readlines() f.close() ===== Découpage ===== À l'issue de ces lignes, ''contenu'' est une liste donc chaque élément est un texte comme ''%%"0.20202020202020202,0.00039814633279967626"%%''. Il faut couper ce texte au niveau du caractère '','' puis interprété chaque morceau comme un nombre à virgule. f = open('data.csv', 'r') # en mode lecture contenu = f.readlines() f.close() for ligne in contenu: texte_x, texte_y = ligne.split(',') # découpe de la ligne x = float(texte_x) # texte converti en nombre y = float(texte_y) # idem ===== Stocker les x et y ===== Dans ce qui précède, on ne fait rien des ''x'' et ''y'' calculés. Il faut les stocker dans des tableaux ''liste_x'' et ''liste_y''. Pour cela, on commence par créer des ''liste_x'' et ''liste_y'' vides, puis à chaque ligne, on ajoute le ''x'' calculé à ''liste_x'' et idem pour ''y''. f = open('data.csv', 'r') # en mode lecture contenu = f.readlines() f.close() liste_x = [] # liste initialisée vide liste_y = [] for ligne in contenu: texte_x, texte_y = ligne.split(',') # découpe de la ligne x = float(texte_x) # texte converti en nombre y = float(texte_y) # idem liste_x.append(x) # ajout de x dans la liste correspondante liste_y.append(y) # ajout de y dans la liste correspondante ===== Par exemple, tracer ===== On a deux listes, on veut tracer. On a déjà vu comment faire dans [[bts:python:tracer_courbe|Tracer une courbe]]. import matplotlib.pyplot as plt f = open('data.csv', 'r') # en mode lecture contenu = f.readlines() f.close() liste_x = [] # liste initialisée vide liste_y = [] for ligne in contenu: texte_x, texte_y = ligne.split(',') # découpe de la ligne x = float(texte_x) # texte converti en nombre y = float(texte_y) # idem liste_x.append(x) # ajout de x dans la liste correspondante liste_y.append(y) # ajout de y dans la liste correspondante plt.plot(liste_x, liste_y) plt.show()