fichiers textes

publicité
LES FICHIERS :
Un fichier stocke des informations sur un support physique (disque dur, clé USB, CD, DVD,
carte mémoire SD...).
Ouvrir un fichier consiste à le charger dans la mémoire vive (RAM) de l'ordinateur (c'est une
mémoire volatile : elle s'efface quand on éteint l'ordinateur).
Enregistrer un fichier consiste à l'écrire sur un support physique de stockage (l'information
est alors conservée de manière permanente).
Il existe deux types de fichiers :
• Les fichiers textes : l'information est stockée sous forme de caractères lisibles par un
éditeur de texte (principalement des lettres et des chiffres. Ils se manipulent ligne par ligne
(ou caractère par caractère).
• Les fichiers binaires : l'information est stockée en binaire (une suite d'octets dont la valeur
est comprise entre 0x00 et 0xFF). Ils se manipulent octets par octets.
S.Loutfi
Lecture des fichiers textes:
En utilisant un éditeur de texte, créez un fichier nommé fichier_texte.txt contenant un texte .
Ouvrez le fichier avec un éditeur hexadécimal
Comment l’information est-elle organisée dans le fichier ?
S.Loutfi
Lecture des fichiers binaires:
En utilisant un éditeur de texte, ouvrez le ficher lena.jpg .
Ouvrez le fichier avec un éditeur hexadécimal
Comment l’information
est-elle organisée
dans le fichier ?
S.Loutfi
Les types d'ouverture:
Plusieurs modes d’ouvertures sont possibles:
r, pour une ouverture en lecture (READ).
w, pour une ouverture en écriture (WRITE), à chaque ouverture le contenu du fichier est
écrasé. Si le fichier n'existe pas python le crée.
a, pour une ouverture en mode ajout à la fin du fichier (APPEND). Si le fichier n'existe pas
python le crée.
b, pour une ouverture en mode binaire.
t, pour une ouverture en mode texte.
x, crée un nouveau fichier et l'ouvre pour écriture
S.Loutfi
Ouverture et lecture d’un fichier texte existant:
chaine = fichier.read() : lit le fichier en intégralité et renvoie une chaîne de caractères.
chaine = fichier.read(n) : lit n caractères du fichier à partir de la position courante et renvoie
une chaîne de caractères.
ligne = fichier.readline() : lit une seule ligne à partir de la position courante y compris le '\n'
qui est le caractère de fin de ligne ; retourne une chaîne vide quand la fin du fichier est atteinte
liste = fichier.readlines() : retourne une liste de toutes les lignes du fichier.
S.Loutfi
Créer et ouvrir un fichier en mode write ‘w’:
Pour écrire dans un fichier, il faut l'ouvrir en mode write (‘w’) ou en mode append(‘a’).
Dans les deux cas si le fichier n'existe pas il sera créé dans le répertoire courant.
Ensuite il suffit d'appliquer la méthode suivante pour écrire une ligne dans le fichier (avec ajout
automatique d’un caractère de fin de ligne) : fichier.write("mon texte ici")
mode write (‘w’): (fichier_write.py)
Après exécution du script, vérifier bien que le fichier est crée dans le répertoire courant!
Remarque: relancer le script en remplaçant «fichier.write('Bonjour à tous !') » par
«fichier.write(‘Rebonjour à tous !) » .
Le fichier est écrasé et remplacé par le nouveau !
S.Loutfi
Créer et ouvrir un fichier en mode append ‘a’:
Vérifier que le fichier test_append existe dans le répertoire courant.
mode append(‘a’): (fichier_append.py)
Après exécution du script, ouvrir le fichier test-append et constatez les changements.
S.Loutfi
EXERCICE 1 : nombre de A!
On veut savoir combien de "A" contient le livre "Germinal" d'Emile Zola !
Le fichier germinal.txt est un fichier texte où toutes les lettres ont été converties en majuscules
sans accents.
Réaliser un programme permettant de compter le nombre de A dans le texte.
Aide :
Fichier =open("germinal.txt",'r') ouvre un fichier en mode lecture
readlines : lit toutes les lignes et renvoie une liste de chaînes.
texte=Fichier.readlines() : crée une liste appelée texte qui contient chaque gline du fichier
texte=str(texte) :convertit la liste en une seule chaîne.
count("mot"): compte le nombre d'occurrences de "mot" dans la chaîne.
S.Loutfi
EXERCICE 2 : nombre de lettres
Vous allez ouvrir germinal.txt, compter pour chaque lettre le nombre d'occurrences.
Evidemment, vous n'allez pas écrire 26 lignes, mais plutôt une boucle for, en utilisant les
fonctions ord et chr qui gèrent le code ASCII des caractères.
ord("A") =) 65
et
chr(65) = "A"……..
En sortie vous écrirez votre rapport dans un fichier texte: rapport_germinal.txt, dont voici un
aperçu:
Analyse de germinal.txt: j'ai trouvé 786296 lettres
Nombre de A = 72409
Nombre de B = 8162
……
J'ai effectué le travail en 6.867573113342618 secondes.
S.Loutfi
EXERCICE 3 : annuaire
Ecrire un script python qui demande à l’utilisateur le Nom, Prénom, Téléphone, Code postal
des adhérents d’une association et stocke ces informations dans un fichier (une information par
ligne). Après chaque nouvelle entrée, demander si la saisie se poursuit ou non.
Ecrire un script python qui demande à l’utilisateur le nom d’un adhérent afin d’afficher ses
coordonnées. Si le nom n’existe pas un message est retourné à l’utilisateur.
S.Loutfi
Le module pickle:
Lorsqu’on enregistre un fichier, les données sont stockées sous forme de chaines de caractères .
Exemple : a= 27, b =12.96, c =[5, 4.83, "René"]
Problème: Comment distinguer les données dans la chaîne de caractères résultante, lorsque nous
effectuons la lecture du fichier ?
C'est impossible ! Rien ne nous indique d'ailleurs qu'il y a là trois valeurs plutôt qu'une seule, ou
2, ou 4…
S.Loutfi
Le module pickle:
Une des solutions à ce genre de problèmes, la meilleure, consiste à importer un module Python
spécialisé : le module pickle .
Pickle permet d'enregistrer les données avec conservation de leur type.
Elles seront fidèlement restituées. On peut mémoriser ainsi des entiers, des réels, des chaînes de
caractères, des listes, des dictionnaires ……
S.Loutfi
Téléchargement