RI2 : Les fichiers texte

January 8, 2018 | Author: Anonymous | Category: Ingénierie, Informatique, Python Programming
Share Embed Donate


Short Description

Download RI2 : Les fichiers texte...

Description

TS Spécialité ISN

Lycée Saint Dominique

2014/2015

RI2 : Les fichiers texte 1. Qu’est-ce qu’un fichier ? Quand on souhaite stocker des données de façon persistantes, on les enregistre dans un fichier. Un texte en ASCII ou en HTML, une image au format PBM, PGM ou PPM, un son de format RAW ou MP3, un programme en Python ou en C, sont des exemples de données que l’on souhaite faire persister. Un fichier est simplement une suite de 0 et de 1 à laquelle on associe un nom. On peut stocker cette suite de bits sur un périphérique, comme un disque ou une clé de mémoire flash (aussi appelée clé USB). On peut également la stocker, via une connexion réseau, dans un espace immatériel appelé « cloud » (l’ENT par exemple) Pour un programme Python par exemple : tout ce qu’on tape directement dans le Shell est perdu dès qu’on éteint l’ordinateur. C’est pour cela qu’on enregistre généralement les scripts auxquels on tient, en leur donnant un nom du genre « mon_fichier.py ». L’extension détermine le type d’information exprimé (texte, image, son…) et le format utilisé pour l’exprimer.

2. Organiser des fichiers Quand un disque ou une clef de mémoire flash contient plusieurs fichiers, il est possible d’en afficher la liste. La manière la plus courante de le faire est de représenter chaque fichier par une icône dans une fenêtre, la forme de l’icône variant selon le format du fichier.

NB : on peut aussi faire afficher la liste des fichiers par ordre alphabétique dans une fenêtre de commande (fenêtre terminal), grâce à la commande ls ou dir

Néanmoins, au bout de quelques dizaines de fichiers, on ne s’y retrouve plus ! Il est donc nécessaire d’organiser ces fichiers. Une manière de faire est de les regrouper dans des dossiers. Par exemple : un dossier Professionnel, un dossier Personnel, et à l’intérieur de chacun, des subdivisions selon les domaines concernés. On appelle cela une organisation arborescente.

Dans cet arbre, le chemin d’un fichier est la liste des noms des nœuds allant de la racine de l’arbre jusqu’au fichier en question. Par exemple, le repertoire.py est :

chemin

du

fichier

/DISQUE/Pro/informatique/Répertoire/repertoire.py

Page 1 sur 8

TS Spécialité ISN

Lycée Saint Dominique

2014/2015

Exercice : Classez sous forme d’une arborescence les fichiers qui traînent dans votre répertoire personnel (sur votre session du lycée)

Remarque : l’organisation arborescente n’est pas le seul moyen de structurer l’information. Elle est en concurrence avec d’autre méthodes, parmi lesquelles l’utilisation de liens hypertextes (notion inventée pour simplifier le mécanisme de référence dans une page web). Avec des liens hypertextes, il est possible d’accéder à des fichiers sans savoir où ils se trouvent dans l’arborescence, simplement en cliquant sur le lien. On pourrait ainsi envisager de laisser toutes ses photos en vrac dans un dossier « photos », et créer plusieurs pages web (l’une pour les photos d’anniversaire, l’autre pour les photos de vacances, ou…), ainsi qu’une page « globale » récapitulant les liens permettant d’accéder à ces diverses pages. Cette idée est à la base du Web, des logiciels de gestion de photos et des réseaux sociaux. On parle de structure de graphe.

3. Comment utiliser un fichier ? L’utilisation d’un fichier ressemble beaucoup à celle d’un livre. Pour utiliser un livre, on doit d’abord le trouver (à l’aide de son titre), puis l’ouvrir. Lorsqu’on a fini de l’utiliser, on le referme. Tant qu’il est ouvert, on peut y lire des informations diverses, et on peut aussi y écrire des annotations, mais généralement on ne fait pas les deux à la fois. On peut se situer à l’intérieur du livre, notamment en s’aidant des numéros de pages. On lit la plupart des livres en suivant l’ordre normal des pages, mais on peut aussi décider de consulter n’importe quel paragraphe dans le désordre. Tout cela s’applique aussi aux fichiers informatiques !

a. Noms de fichiers, répertoire courant Lorsqu’on lance un script depuis la fenêtre d’un Shell IDLE, ce dernier se place par défaut dans un répertoire courant. Sous Windows, la définition de ce répertoire courant fait partie des propriétés de l’icône de lancement. On a généralement envie de choisir soi-même le répertoire courant afin qu’il corresponde à ses attentes. Pour cela :



on commence par importer le module os, qui contient toute une série de fonctions permettant de « dialoguer » avec le système.



On vérifie quel est actuellement le répertoire courant avec la commande getcwd() Page 2 sur 8

TS Spécialité ISN

Lycée Saint Dominique



On force le changement de répertoire avec la commande chdir



On vérifie que le changement a bien été fait

2014/2015

Remarque sur l’importation d’un module de fonctions : Dans l’exemple précédent, on a utilisé la commande import os, et ensuite, on a systématiquement fait précéder les noms de fonctions du préfixe os. : os.getcwd() ou os.chdir() Ceci permet d’être très précis dans l’appel de la fonction : on veut celle du module os, et pas une autre ! L’inconvénient est d’alourdir un peu les notations. Une autre façon de procéder serait d’importer toutes les fonctions avec la commande « from os import * ». Dans ce cas, on peut se contenter d’appeler la fonction désirée sans préfixe. Voir ci-dessous :

Néanmoins, on ne RECOMMANDE PAS DU TOUT cette dernière méthode dans le cas du module os : en effet, certaines fonctions de ce module risquent d’interférer avec des fonctions internes à Python Page 3 sur 8

TS Spécialité ISN

Lycée Saint Dominique

2014/2015

(typiquement, la fonction open qu’on va utiliser un peu plus loin). Il vaut mieux importer le module os, puis écrire le préfixe avant les fonctions dont on a besoin (quelques-une, pas plus).

b. Ecriture séquentielle dans un fichier Sous Python, l’accès aux fichier est assuré par l’intermédiaire d’un « objet-fichier », que l’on crée à l’aide de la fonction open(). Après cela, on peut lire et écrire dans le fichier en utilisant les méthodes spécifiques de cet « objet-fichier ». Si le fichier n’existait pas déjà, il est créé automatiquement. S’il existait déjà et contenait des données, celles qu’on y enregistre viendront s’ajouter à la suite des précédentes. Testez avec l’exemple suivant :

 La première ligne crée « l’objet-fichier », lequel fait référence à un fichier véritable dont le nom est mon_fichier_test et qui est rangé par défaut dans le répertoire courant. Allez donc voir s’il y a bien été créé ! Ouvrez-le avec un éditeur de textes quelconque. NE CONFONDEZ PAS LE NOM DU FICHIER AVEC CELUI DE L ’OBJET-FICHIER QUI Y DONNE ACCES !!  La fonction open() attend 2 arguments qui doivent être des chaînes de caractère (entre guillemets ou entre apostrophes). Le premier argument est le nom du fichier à ouvrir, le second indique le mode d’ouverture. Le ‘a’ signifie : « mode ajout » (append) ; les données à enregistrer doivent être ajoutées à la suite de celles qui s’y trouveraient éventuellement déjà. On aurait pu utiliser le mode ‘w’ (mode « write ») mais dans ce cas, si le fichier contenait déjà des données, Python les aurait écrasées en recommençant du début.  La méthode write() est une méthode attachée à l’objet-fichier : c’est pour cela qu’on l’appelle en tapant d’abord le nom de cet objet suivi d’un point. Elle réaliser l’écriture proprement dite. Les données fournies en argument sont écrites à la suite les unes des autres. Chaque nouvel appel de « write() » continue l’écriture à la suite de ce qui est déjà enregistré.  La méthode close() referme le fichier, qui est désormais disponible pour un autre usage.

c. Lecture séquentielle d’un fichier On peut maintenant rouvrir le fichier, mais cette fois en mode lecture, pour y relire les informations entrées précédemment. Page 4 sur 8

TS Spécialité ISN

Lycée Saint Dominique

2014/2015

On voit que la méthode read() lit les données présentes dans le fichier, et les transfère dans une variable de type string (ici la variable t). Si on ne spécifie aucun d’argument à read(), la totalité du fichier est transférée.

REMARQUES :  Attention à ne pas se tromper dans le nom du fichier à ouvrir. Ici, c’était « mon_fichier_test ». Si le fichier n’existe pas, on obtient un message d’erreur

En revanche, on peut choisir le nom que l’on veut pour l’objet-fichier (ici, on a choisi « ofi »). C’est une simple variable de stockage, pas un fichier « réel ».  Les deux chaînes de caractère que nous avions rentrées sont accolées en une seule. C’est normal, car nous n’avions fourni aucun caractère de séparation quand nous les avions enregistrées. On verra plus tard comment faire cela.  La méthode read() peut également être appelée avec un argument, qui indique combien de caractères doivent être lus, à partir de la position déjà atteinte dans le fichier.

S’il ne reste pas assez de caractères, Python s’arrête à la fin du fichier. Si la fin du fichier était déjà atteinte, Python renvoie une chaîne vide.

d. Fichiers texte Un fichier texte contient des caractères imprimables et de 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 ». Il est très facile de traiter ce genre de fichiers sous Python. Par exemple, les instructions suivantes créent un fichier texte de quatre lignes :

Page 5 sur 8

TS Spécialité ISN

Lycée Saint Dominique

2014/2015

Le marqueur de fin de ligne est ………… Lors de la 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 ligne à la fois (en incluant le caractère de fin de ligne)

Attention à ouvrir le fichier en mode lecture « r » et surtout pas en mode « w » , sinon non seulement vous ne pourrez pas utiliser readline, mais en plus, le système va écraser l’ancien fichier « mon_fichier_texte » et en créer un nouveau… vide !  La méthode readlines() transfère toutes les lignes restantes dans une LISTE de chaînes de caractères.

Cette liste apparaît en format « brut », avec les apostrophes autour des chaînes, et les caractères spéciaux. On peut évidemment parcourir cette liste si besoin (avec une boucle while), pour en extraire les chaînes individuelles.

4. Activités et mini-projets

Page 6 sur 8

TS Spécialité ISN

Lycée Saint Dominique

2014/2015

Vérifier le résultat en ouvrant le fichier texte créé !

Page 7 sur 8

TS Spécialité ISN

Lycée Saint Dominique

2014/2015

Page 8 sur 8

View more...

Comments

Copyright � 2017 NANOPDF Inc.
SUPPORT NANOPDF