LGT Saint-Exupéry, Mantes-la-Jolie
Fiche méthode 1ère NSI – Les fichiers CSV 1/4
Objectifs :
✓ Connaitre la structure d’un fichier CSV
✓ Savoir importer une table depuis un fichier CSV
✓ Utiliser un tableau doublement indexé ou un tableau de p-uplets qui partagent le même descripteur
Mémoriser des données dans le but de les conserver, de les traiter ultérieurement est une nécessité dans de très nombreux domaines d’activité. Il existe un format international, le Comma-Separated Values, plus connu sous l’acronyme CSV, qui permet de stocker des données sous formes de valeurs séparées par des virgules.
La clé USB a été inventée en 1988. Elle contient une mémoire flash qui permet de stocker de grandes quantités de données facilement accessibles.
Les principes
✓ Un fichier CSV est un fichier texte, par opposition aux formats dits « binaires ».
✓ Chaque ligne du texte correspond à une ligne du tableau et les virgules correspondent aux séparations entre les colonnes.
✓ Les portions de texte séparées par une virgule correspondent ainsi aux contenus des cellules d’un tableau.
Une ligne est une suite ordonnée de caractères terminée par un caractère de fin de ligne (retour à la ligne).
✓ La plupart des logiciels Tableurs (Microsoft Excel, LibreOffice Calc, Corel Quattro Pro, Lotus 123…) lisent correctement les fichiers CSV et sont capables d’exporter leurs tableaux en CSV.
✓ La première ligne d’un fichier CSV peut contenir la liste des descripteurs, c’est la dire les entêtes de colonnes des données présentes dans le fichier.
Remarque : plusieurs formats dérivés du « CSV pur » ont vu le jour, en particulier en France où la virgule est réservée pour les nombres décimaux, les séparateurs « virgule » sont alors remplacés par d’autres caractères : point-virgule, tabulation, barre verticale (tube/pipe)…
Attention : si les données stockées sont des champs texte, ils doivent également être délimités par des guillemets.
Lorsqu'un champ contient lui-même des guillemets, ils sont doublés afin de ne pas être considérés comme début ou fin du champ.
Activité
1. Récupérer le fichier villes.csv et l’enregistrer sur votre compte.
2. Ouvrir le fichier avec un éditeur de texte. Identifier le nom des descripteurs des différentes données.
3. Ouvrir le fichier avec le tableur de votre choix. Noter le numéro de la ligne dans lequel vous trouverez les données sur la ville dans laquelle vous habitez.
Les fichiers CSV
LGT Saint-Exupéry, Mantes-la-Jolie
Fiche méthode 1ère NSI – Les fichiers CSV 2/4
Structure
En ouvrant un fichier CSV avec un simple éditeur de texte, nous pouvons obtenir :
En ouvrant le même fichier dans un tableur, nous obtenons :
Document 1 : exemple de structure d’un fichier CSV et ouverture dans un tableur
Saut de ligne Ligne des descripteurs
Séparateur « virgule »
Données correspondant aux descripteurs, séparées par des virgules
LGT Saint-Exupéry, Mantes-la-Jolie
Fiche méthode 1ère NSI – Les fichiers CSV 3/4
Lecture/Ecriture d’un fichier CSV avec Python
L’utilisation d’un fichier ressemble beaucoup à l’utilisation d’un livre.
Utilisation d’un livre dans la vie courante
Utilisation d’un fichier texte avec Python
Trouver le livre (à l’aide de son titre), puis l’ouvrir
f = open(nom_fichier, mode, encodage)
✓ nom_fichier = chemin (si non précisé, le répertoire courant du script Python → consulter le module os.path) et nom du fichier avec son extension
✓ mode = mode d’ouverture :
▪ r : lecture (read)
▪ w : écriture (write) – Attention : si un fichier du même nom existe déjà il est effacé !
▪ a : ajout (append). Si le fichier n'existe pas Python le crée.
✓ encodage = encodage des caractères pour les fichiers textes utf8, ascii, latin1, etc.
Si le fichier n’existe pas, Python retourne une erreur → pensez à gérer les exceptions (voir Zoom « Gérer les exceptions »)
Tant qu’il est ouvert, vous pouvez y lire des informations diverses
✓ Méthode read(n) : lit n caractères (sans argument, la totalité du fichier est lu) → stockage dans une chaine de caractères.
✓ Méthode readline() : ne lit qu’une seule ligne à la fois (en incluant le caractère de fin de ligne) → stockage dans une chaine de caractères.
✓ Méthode readlines() : lit la totalité du fichier (en réalité toutes les lignes restantes si les méthodes read et readline ont été utilisées au préalable) → stockage en une liste
Vous pouvez y écrire des notes personnelles
Méthode write(txt) : écrit le texte txt dans le fichier. Ces données sont enregistrées dans le fichier les unes à la suite des autres (On parle alors de fichier à accès séquentiel).
Le marqueur \n de fin de ligne peut être inséré dans les chaines de caractères, aux endroits où l’on souhaite séparer les lignes de texte dans l’enregistrement.
Après utilisation, refermer le livre f.close()
Remarque :
Il existe une autre syntaxe plus courte qui permet de s'émanciper du problème de fermeture du fichier : utiliser le mot clé with.
Exemple : pour afficher tout le contenu d’un fichier :
with open("fichier.txt", "r") as fichier:
print fichier.read()
LGT Saint-Exupéry, Mantes-la-Jolie
Fiche méthode 1ère NSI – Les fichiers CSV 4/4
Exemple de lecture
Si le fichier « fichier.csv » contient :
Le script suivant montre quelques exemple d’utilisation des 3 méthodes de lecture : f = open('fichier.csv','r')
txt = f.readline() print(txt)
ligne 1
print(f.readline()) ligne 2
t = f.readlines() print(t)
['ligne 3 \n', 'ligne 4\n']
f.close()
Remarques :
✓ La liste apparait ci-dessus en format brut, avec des apostrophes pour délimiter les chaines, et les caractères spéciaux sous leur forme conventionnelle. Vous pourrez bien évidemment parcourir cette liste (à l’aide d’une boucle while, par exemple) pour en extraire les chaines individuelles.
✓ La méthode readlines() permet donc de lire l’intégralité d’un fichier en une instruction seulement. Cela n’est possible toutefois que si le fichier à lire n’est pas trop gros tout est alors stocké dans la mémoire vive de l’ordinateur, il faut que la taille de celle-ci soit suffisante. Si vous devez traiter de gros fichiers, utilisez plutôt la méthode readline() dans une boucle.
Zoom : Gérer les exceptions
Une exception est l’opération qu’effectue l’interpréteur Python lorsqu’une erreur est détectée au cours de l’exécution du programme.
Exemple typique : la division par zéro print(14/0)
ZeroDivisionError : int division or modulo by zero
S’il est possible – et souhaitable – de prévoir à l’avance certaines erreurs en incluant des tests préalables, il est impossible de prévoir toutes les combinaisons (surtout s’il y a des saisies utilisateurs).
Dans les langages de niveau élevé, il est possible d’ajouter un mécanisme de surveillance à un bloc d’instructions : c’est le mécanisme de traitement des exceptions.
Syntaxe sous Python : try/except/else try:
Instructions except:
Instruction à exécuter si une erreur se présente dans le bloc « try » else:
(Facultatif) Instructions à exécuter si aucun passage par except