CPGE – PTSI Mr Pernot Les fichiers Algorithme et Programmation page 1/7 1. Intr

CPGE – PTSI Mr Pernot Les fichiers Algorithme et Programmation page 1/7 1. Introduction Jusqu'à présent, les programmes que nous avons réalisés ne traitaient qu'un très petit nombre de données. Nous pouvions donc à chaque fois inclure ces données dans le corps du programme lui même (par ex dans une liste). Cette façon de procéder devient cependant tout à fait inadéquate lorsque l'on souhaite traiter une quantité d'informations plus importantes. 2. Utilité des fichiers Imaginons par exemple que nous voulions écrire un petit programme exerciseur qui fasse apparaître à l'écran des questions à choix multiple, avec traitement automatique des réponses de l'utilisateur. Comment mémoriser le texte des questions elles mêmes ? Faisons appel à une liste: On peut extraire n'importe quel élément de cette liste par son indice: Mais plusieurs problèmes gênants se présentent: * la lisibilité mauvaise du programme si la liste est énorme, * l'ajout de nouvelles questions, ou modifications imposeront de rouvrir le code source, * l'échange de données avec d'autres programmes impossible 3. Les 2 familles de fichiers Les fichiers sont tous écrits en binaire. Il est néanmoins possible de les séparer en 2 familles : - Les fichiers binaires qui nécessitent de connaître le format binaire d’écriture pour être lus, - Les fichiers texte qui contiennent des caractères uniquement, et qui peuvent s’ouvrir sur un éditeur quelconque. séparer les données et les programmes en créant des FICHIERS CPGE – PTSI Mr Pernot Les fichiers Algorithme et Programmation page 2/7 4. Le répertoire courant Lors de l'ouverture d'un fichier dans Python, les fichiers seront recherchés dans le répertoire courant. Celui-ci est habituellement le répertoire où se trouve le script lui même. Si vous souhaitez voir le répertoire courant sur votre PC pour Python: Si vous souhaitez forcer Python à ouvrir un fichier dans un autre répertoire, utilisez les commandes suivantes en début de programme: 5. Lecture et écriture dans les fichiers 5.1. Ouvrir des fichiers Les formats étant assez complexes et variés, on ouvre les fichiers via des librairies, avec des commandes toutes prêtes : Ex : Dans python : librairie PIL( Python Imaging Library) Si on souhaite ouvrir un fichier, on utilise la fonction « open() ». Elle prend en paramètre :  Chemin (absolu ou relatif) menant au fichier à ouvrir,  Mode d’ouverture = chaine caractères Les principaux modes : - « r » : ouverture en lecture (Read), - « w » : ouverture en écriture (Write), on écrase l’ancien fichier - « a » : ouverture en écriture en mode ajout (Append), on écrase pas ancien fichier Les principales méthodes de la classe file sont les suivantes : .read() retourne tout le fichier comme un str .read(n) retourne un str d’au moins n octets .readline() retourne une ligne .readlines() retourne la liste de toutes les lignes du fichier .write(s) écrit (objet str) dans le fichier .writeslines(lines) écrit lines (liste de str) dans le fichier .close() ferme le fichier .next() retourne la ligne suivante getcwd: get courant working directory chdir: change directory CPGE – PTSI Mr Pernot Les fichiers Algorithme et Programmation page 3/7 5.2. Ecriture séquentielle dans un fichier L’exemple ci après vous montre comment ouvrir un fichier en écriture, y enregistrer 2 chaines de caractères, puis le refermer. Si le fichier n’existe pas encore, il sera créé automatiquement. 5.3. Lecture séquentielle dans un fichier Nous allons maintenant rouvrir le fichier, en lecture, pour voir les informations qu’il contient : Remarque : la méthode read() peut également être utilisée avec un argument. Celui-ci indiquera combien de caractères doivent être lus, à partir de la position déjà atteinte dans le fichier : 6. Les fichiers texte saisis dans Python Un fichier texte est un fichier qui contient des caractères « imprimables » et des espaces organisés en lignes successives, ces lignes étant séparées les unes des autres par un caractère spécial non imprimable appelé marqueur de fin de ligne. On peut lire un fichier texte avec un simple éditeur (word pad…) contrairement aux fichiers binaires (jpeg, bmp…). Il est très facile de traiter des fichiers texte avec Python. Par exemple, les instructions suivantes suffisent pour créer un fichier texte de 4 lignes : Notez bien le marqueur de fin de ligne \n pour séparer les lignes (on avait pas mis \n dans les exercices précédents). Mode « a » = ajout Python créé un fichier texte CPGE – PTSI Mr Pernot Les fichiers Algorithme et Programmation page 4/7 Lors des opérations de lecture, les lignes d’un fichier texte peuvent être extraites séparément les unes des autres. La méthode readline(), ne lit qu’une seule ligne à la fois. La méthode readlines() transfère toutes les lignes restantes dans une liste de chaînes : La méthode ligne.split() retourne dans une liste les mots de la ligne (découpage en utilisant l’espace). 7. Exercice On vous donne un fichier data2.txt situé dans le répertoire courant, contenant un relevé de température en fonction du temps : 1°) Ouvrir ce fichier directement dans IDLE Python et regarder la structure de ce fichier. Comme l’interpréteur est un éditeur de texte, il ouvre data2.txt comme via blocnote et on ne peut rien faire du fichier… CPGE – PTSI Mr Pernot Les fichiers Algorithme et Programmation page 5/7 2°) Ouvrir ce fichier en lecture via open() afin de l’afficher dans le SHELL. Vous créerez un script « lecture1temp » que vous enregistrerez dans le même répertoire que « data2.txt ». 3°) Ouvrir ce fichier en lecture via open() afin de l’afficher dans le SHELL dans une liste appelée « data ». Vous créerez un script « lecture2temp » que vous enregistrerez dans le même répertoire que « data2.txt ». 4°) Ouvrir ce fichier en lecture via open() afin de l’afficher dans le SHELL dans une liste appelée « data » composée de n liste issues dans n ligne du fichier. Vous créerez un script « lecture3temp » que vous enregistrerez dans le même répertoire que « data2.txt ». 5°) Ouvrir ce fichier en lecture via open() afin de l’afficher dans le SHELL dans une liste appelée « data » composée de n listes issues dans n lignes du fichier mais en affichant pas les lignes avec commentaires (#). Vous créerez un script « lecture4temp » que vous enregistrerez dans le même répertoire que « data2.txt ». CPGE – PTSI Mr Pernot Les fichiers Algorithme et Programmation page 6/7 6°) Enregistrez le précédent script sous « lecture5temp » et rajouter des instructions permettant de créer 2 listes : t, temperature dans lesquelles seront stockées les valeurs numériques du temps et de la température du fichier «data2.txt ». Puis, les afficher. 7°) Enregistrez le précédent script sous « lecture6temp » et n’affichez plus que les 2 listes t et temperature et les instructions permettant de récupérer le temps 0.34s et la température correspondante…. Ca y est, on extrait des valeurs d’un fichier et on pourra les traiter… CPGE – PTSI Mr Pernot Les fichiers Algorithme et Programmation page 7/7 8. L'instruction .format() L'instruction .format() précédée d'accolades {} ou \t ou \n permet d'afficher le contenu de listes en colonnes et en clair. 9. L'instruction map(function, sequence) L'instruction map(function, sequence) permet d’appliquer la fonction (ex : float) à la sequence (ex : val) Voici un fichier texte contenant n valeurs : On souhaite calculer la moyenne de ces valeurs (qui sont des string dans ce fichier texte !!). Pour cela on va ouvrir le fichier en créant une liste (readlines) puis créer une autre liste (data) contenant les valeurs en flottant des chiffres du fichier texte : uploads/Litterature/ c10-les-fichiers-prof-pdf.pdf

  • 33
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager