PYTHON
MANIPULER LES FICHIERS

Objectif

Il s'agit ici de vous familiariser avec la gestion des fichiers en Python, en réalisant différentes opérations telles que la création, la modification ou la lecture de fichiers.

Les lignes de code seront écrites avec l'EDI (Environnement de Développement Intégré) EduPython.

Comprendre

Le Python dispose de la fonction native open(), disposant de plusieurs modes :

   w    Ouvre en écriture, en effaçant le contenu du fichier
   a    Ouvre en écriture, en ajoutant à la fin du fichier
   r    Ouvre en lecture (mode par défaut)

Votre travail :

Créer un fichier

Ce programme crée un fichier s'il n'existe pas déjà. Il remplace l'éventuel texte présent dans le fichier par un nouveau texte.

fichier = open("mon_fichier.txt", "w")
fichier.write("Bonjour à tous!\n")
fichier.close()

Ajouter du contenu

Ce programme crée un fichier s'il n'existe pas déjà. Il ajoute à la fin du texte existant un nouveau texte.

fichier = open("mon_fichier.txt", "a")
fichier.write("Comment allez-vous?\n")
fichier.close()

Lire le contenu

Ce programme récupère et affiche la totalité du fichier.

fichier = open("mon_fichier.txt", "r")
contenu = fichier.read()
fichier.close()
print(contenu)

Ci-dessous, chaque ligne est mise dans une liste.

fichier = open("mon_fichier.txt", "r")
contenu = fichier.read()
ligne = contenu.split("\n")
fichier.close()
print(ligne)

La variante ci-dessous, plus simple et plus commune, produit un résultat légèrement différent.

fichier = open("mon_fichier.txt", "r")
ligne = fichier.readlines()
fichier.close()
print(ligne)

La méthode strip() supprime les caractères non imprimables en début et fin de chaîne.

fichier = open("mon_fichier.txt", "r")
ligne = fichier.readlines()
fichier.close()
print(ligne[0])
print(ligne[0].strip())

Gérer le format CSV

Ce programme récupère les notes d'un contrôle et les sauvegarde au format CSV. Testez-le avec trois ou quatre élèves.

print("NOTES DE CONTROLE")
nb= int(input("Combien y a-t-il d'élèves? "))

csv = "Nom;Note\n"
for i in range(nb):
  nom = input("Quel nom porte l'élève? ")
  note = input("Quelle est a note? ")
  csv += nom+";"+note+"\n"

print(csv)

fichier = open("notes.csv", "w")
fichier.write(csv)
fichier.close()

Le programme ci-dessous ouvre le fichier, lit les données et calcule la moyenne.

fichier = open("notes.csv", "r")
ligne = fichier.readlines()
fichier.close()

total = 0
nb_notes = 0
for i in range(1,len(ligne)):
  note = ligne[i].split(";")
  total += float(note[1])
  nb_notes += 1
  
moyenne = total/nb_notes
print("Moyenne : ",round(moyenne,1)) 

Pratiquer

Pour la suite, récupérez le fichier : notes.csv.

Notes maximale et minimale

En modifiant le programme ci-dessus :

Notes supérieures à 10

En modifiant le programme ci-dessus, retrouver et afficher le nombre de notes supérieures ou égales à 10.

Approfondir

CSV vers HTML

Compléter le programme ci-dessous qui convertit les fichiers au format CSV en tableaux à incorporer dans les pages HTML.

fichier_csv = open("notes.csv", "r")
ligne = fichier_csv.readlines()
fichier_csv.close()

retour='<table>\n'
...

fichier_html = open("notes.html", "w")
fichier_html.write(retour)
fichier_html.close() 

Exemple de fichier de départ, au format CSV :

Nom;Note
Julie;13
Laura;08
Pascal;15

Tableau attendu, au format HTML :

<table>
<tr><td>Nom</td><td>Note</td><tr>
<tr><td>Julie</td><td>13</td><tr>
<tr><td>Laura</td><td>08</td><tr>
<tr><td>Pascal</td><td>15</td><tr>
</table>

Ou mieux encore :

<table>
<tr><th>Nom</th><th>Note</th><tr>
<tr><td>Julie</td><td>13</td><tr>
<tr><td>Laura</td><td>08</td><tr>
<tr><td>Pascal</td><td>15</td><tr>
</table>

Traitement de texte

  1. Récupérer le fichier histoire.txt et le placer dans le même dossier que celui de votre programme en Python.
  2. Écrire un programme qui lit le contenu du fichier et remplace toutes les occurrences du mot Léo par votre prénom.

Selon la version du Python que vous utilisez, il vous faudra peut-être préciser l'encodage.

fichier = open("histoire.txt", "r", encoding="utf-8")

Affichage de données publiques

Récupérer des données sur le site data.gouv.fr

  1. Se rendre sur le site https://www.data.gouv.fr/fr/.
  2. Chercher et télécharger un jeu de données concernant l’agriculture biologique, plus particulièrement sur l’élevage entre les années 2008 et 2011.
  3. Pour le cas où vous ne trouveriez pas : 972e21c5d6cb4ceb2e18ae3a606b4401185e1bd4c53bc3944b9fc2bbf9e60e.csv
  4. Ouvrir le fichier téléchargé avec un éditeur de texte (Notepad++...) pour prendre connaissance de son contenu.

Analyser le fichier

Ecrire un programme comptant et affichant :

  1. Le nombre total d'enregistrements.
  2. Le nombre d'enregistrements pour l'année 2010.
  3. Le nombre de producteurs landais.

Visualiser les données avec Khartis

  1. Se rendre sur http://www.sciencespo.fr/cartographie/khartis/
  2. Choisir l'utilisation en ligne, puis rechercher le fond de carte France / départements 2016.
  3. Une fois ce fond de carte sélectionné, une zone vide pour copier-coller des données apparaît au bas de la page.
  4. Retourner sur votre éditeur de texte, sélectionner et copier l’ensemble des données. Retourner sur la page web de Khartis pour les coller dans la zone prévue.
  5. Cliquer sur Suivant, puis à nouveau sur Suivant, jusqu’à ce que s’affiche une carte de France vierge.
  6. Cliquez sur Ajouter une visualisation et sur Symboles proportionnels.
  7. Cliquez sur Choisir une variable puis sur Producteurs. Votre carte est prête!