Importer un fichier .CSV dans Python
Remarque :
Utiliser le fichier contenant la liste des communes des Deux-Sèvres modifié à la séance précédente.
Ouvrir le fichier.
Si besoin, télécharger le fichier .CSV ci-dessous :
Méthode :
Ouvrir le fichier suivant sur Edupython :
Ce programme complexe (voir ci-dessous) permet d'importer les données d'un fichier CSV et de les placer dans une variable Python de type tableau.
1
from tkinter.filedialog import askopenfilename
2
from tkinter import Tk
3
4
Mafenetre = Tk() #on ouvre la fenêtre Tk
5
Mafenetre.withdraw() #on cache la fenêtre
6
7
#on peut donner le chemin d'accès vers le fichier ou la fonction askopenfilename8
name = askopenfilename(parent=Mafenetre,filetypes =(("Fichier CSV", "*.csv"),("Fichier Texte","*.txt"),("Tous les fichiers","*.*")),title = "Choisir un fichier")
9
#on definit explicitement cette fenêtre comme objet parent de askopenfilename10
11
sep = "***A COMPLETER***" #caractère séparateur du csv -peut être une virgule, un point-virgule ou une tabulation noté \t
12
entete = ***A COMPLETER*** #nombre de lignes d'entete
13
14
f = open(name,"r",encoding='utf-8')
15
data = f.readlines() #on lit toutes les lignes et on met ça dans une liste -un élément par ligne-
16
f.close() #on referme le fichier
17
Mafenetre.destroy() #on ferme la fenêtre Tk
18
19
data = data[ entete : ] #on supprime les lignes d'en-tête qui ne nous intéressent pas
20
21
tableau=[]22
for ligne in data:
23
ligne = ligne.replace("," , ".") #change les virgules en point => format numérique différent sur python
24
ligne = ligne.strip().split(sep) #on sépare les différents élément en utilisant le caractère séparateur défini
25
tableau.append(ligne)
26
27
print(tableau[0:2])
Compléter les lignes 11 et 12 en remplaçant les codes ***A COMPLETER*** afin d'importer l'intégralité des données.
Si la modification du fichier s'est correctement déroulé sur ces 2 lignes, la console affiche ceci :
1
[['79356', '79150', 'VOULTEGON', 'Commune simple', '136', '1760', '0.6', '46.9119628011', '-0.52429679005'], ['79179', '79320', 'MONCOUTANT', 'Chef-lieu canton', '179', '2671', '3.1', '46.7361693715', '-0.578776799054']]





