Vous êtes sur la page 1sur 5

Lycée Douz Filière : Sciences informatique

Les fichiers textes


I. Caractéristiques :
 Editable avec un éditeur de texte, permet d’enregistrer des chaines de caractère.
 Accès séquentielle et direct
II. Opérations sur les fichiers textes:
1. Association ou assignation : Avant d’utiliser un fichier il faut d’abord relier ou associer le nom
logique au nom physique.
Syntaxe :
En algorithme En Python
Associer (nom logique, nom physique) L’association est réalisée lors d’ouverture (étape suivante)

Remarque:
Le nom logique d’un fichier représente la variable de type fichier utilisé dans le programme, cependant
le nom physique est le nom avec lequel est enregistré sur le support de stockage.
Exemples :
 Association de fichier « eleve.txt » (dans le même répertoire que le code source de notre
programme) au nom logique F1 : Associer (F1, "eleve.txt")
 Association de fichier « eleve.txt » (dans le dossier 3SI du disque local C:\) au nom logique F2 :
Associer (F2, "C:\3SI\eleve.txt")
2. Ouverture :
Ouverture et création : permet d’ouvrir, en écriture, un fichier et d’effacer son contenu, si le
fichier n’existe pas il sera créé.
Syntaxe :
Algorithme En Python
# Association et ouverture
Récréer (nom logique) Nom_logique = open (Nom_physique , mode d’ouverture)

N.B. :
 Mode d’ouverture en python :
"r" Valeur par défaut. Ouvre le fichier en lecture. Erreur Si le fichier n’existe pas.

Ouvre le fichier en écriture. Si le fichier existe son contenu sera effacé sinon (le fichier
"w"
n'existe pas) python le crée.

Ouvre le fichier en mode ajout à la fin (APPEND). Si le fichier n'existe pas python le
"a"
crée.
"x" crée un nouveau fichier et l'ouvre pour écriture. Erreur si le fichier existe
Ouverture en lecture :
Ouvre le fichier en lecture. Le pointeur point le premier caractère dans le fichier.
Syntaxe :
En algorithme En Python
Ouvrir (nom logique) Nom_logique = open (Nom_physique , 'r')
Ouverture en ajout : Ouvre le fichier en écriture à la fin.
Syntaxe :
En algorithme En Python
Ajouter (nom logique) Nom_logique = open (Nom_physique , 'a')

Prof. : Ben Amor Mosbah A.S. : 2020/2021


Lycée Douz Filière : Sciences informatique
N.B. : A chaque opération de lecture ou d’écriture d’une valeur, le pointeur du fichier avance
automatiquement d’une position (caractère ou ligne).
3. Ecriture dans un fichier texte : Ecriture dans un fichier déjà associer et ouvert en mode écriture.
Syntaxe :
En algorithme En Python
Ecrire_nl (nom logique, informations) Nom_logique . write ( informations )
N.B. :
 En algorithme : l’écriture se fait ligne par ligne
 En Python : pour écrire une ligne on doit ajouter ‘\n’ à la fin de l’information à écrire.
Exemple : f.write ("Foulen Ben Foulen\n")
4. Fermeture d’un fichier :
À la fin du traitement nous devons fermer les fichiers ouverts.
Syntaxe :
En algorithme En Python
Fermer (nom logique) Nom_logique.close()

Application :
Remplir un fichier nommé « eleve.txt », par les noms et prénoms de N élèves (1≤N≤10) à raison
d’un nom et prénom par ligne.
 Algorithme
Algorithme ecrire_fichier_texte
Début
Associer (f, "eleve.txt")
T.D.O Objet Type
Recréer (f)
Répéter f texte
| Lire(N) nom, prenom chaine
Jusqu’à N DANS [1 .. 10] N, i entier
Pour i de 1 à N faire
| Lire (nom)
| Lire (prenom)
| Ecrire_nl (f, nom, " ", prenom)
Fin Pour
Fermer (f)
Fin
 Implémentation en Python

f = open ("eleve.txt","w") # Association et création du fichier eleve.txt


while True: # boucle de lecture de nombre d'élèves
n = int(input('N='))
if n in range(1,11):
break
for i in range(n):
ch = input('Nom et prénom:')
f.write ( ch + '\n' ) # écriture de nom et prénom d'un élève par ligne
f.close ( )

N.B : En python, On peut utiliser la structure with dans l’ouverture du fichier


Exemple : with open ("eleve.txt","w") as f:
………………………

Prof. : Ben Amor Mosbah A.S. : 2020/2021


Lycée Douz Filière : Sciences informatique
5. Lecture à partir d’un fichier texte:
Lecture à partir d’un fichier déjà associer et ouvert en mode lecture.
Syntaxe :
Algorithme Python
Lire (nom_logique, variable) Variable = nom_logique.read (nombre de caractères à lire)
Lire_nl (nom_logique, variable) Variable = nom_logique.readline ( )
Variable = nom_logique. readlines ( )
N.B. :

En algorithme, le contenu lu dépond de type de variable.

En python, tous les caractères du fichier sont pris en compte ('\n' '\r')

En Python, Variable = nom_logique.read ( ) permet de lire toutes les lignes du fichier.

En Python, nom_logique.readlines ( ) retourne une liste composée des lignes du fichier
(même le caractère « \n » sera lu).
6. Test de fin fichier :
A chaque moment nous pouvons tester si nous avons atteint la fin d’un fichier en lecture.
Syntaxe :
Algorithme Python
Fin_fichier (nom_logique) la chaine lue et vide

Application : Afficher les noms et prénoms des élèves enregistrés dans le fichier « eleve.txt » réalisé
dans l’application précédente.
 Algorithme
Algorithme Lecture_fichier_texte
Début T.D.O Objet Type
Associer (f, "eleve.txt") f texte
Ouvrir (f) ch chaine
Tant que NON Fin_fichier (f) faire
| Lire_nl ( f, ch)
| Afficher (ch)
Fin Tant que
Fermer (f)
Fin
 Implémentation en Python
1ère méthode 2ème méthode 3ème méthode
Lecture avec read ( ) Lecture ligne par ligne Lecture dans une liste
# ouverture du fichier en lecture # ouverture du fichier en lecture # ouverture du fichier en lecture
f = open ("eleve.txt","r") f = open ("eleve.txt","r") f = open ("eleve.txt","r")
# Lecture de la totalité du fichier while True: # Lecture de contenu dans une liste
ch = f.read( ) # lecture d'une ligne ch = f.readlines ( )
# Affichage ch = f.readline ( ) # Affichage
print(ch) # délectation de fin fichier print (ch)
if ch = = "" :
f.close() f.close()
break
else:
print (ch)
f.close()
Résultat d’exécution
Ben Amor Yassine Ben Amor Yassine ['Ben Amor Yassine\n', 'Ben Amor Ibèa\n',
Ben Amor Ibèa 'Ben Amor Assil\n']
Ben Amor Assil Ben Amor Ibèa

Ben Amor Assil

Prof. : Ben Amor Mosbah A.S. : 2020/2021


Lycée Douz Filière : Sciences informatique

4ème méthode 5ème méthode 6ème méthode


Lecture ligne par ligne Lecture ligne par ligne Itération sur le fichier
# ouverture du fichier en lecture # ouverture du fichier en lecture with open ("eleve.txt","r") as f:
f = open ("eleve.txt","r") f = open ("eleve.txt","r") for ligne in f:
# Affichage les lignes ligne=f.readline() print (ligne)
for line in f: while ligne:
f.close()
print (line) print(ligne)
ligne=f.readline()
f.close()
f.close()
Résultat d’exécution
Ben Amor Yassine Ben Amor Yassine Ben Amor Yassine

Ben Amor Ibèa Ben Amor Ibèa Ben Amor Ibèa

Ben Amor Assil Ben Amor Assil Ben Amor Assil


N.B : L’accès réalisé est séquentielle
1. Les fonctions et les procédures prédéfinies :
N.B. : En python, une procédure est une fonction qui ne retourne rien.
Procédure Rôle
Algo. pointer (nom logique, numéro du caractère)
pointe un caractère d’un fichier texte
Python Non_logique.seek (numéro du caractère)
Algo. effacer (nom logique)
Ecraser un fichier
Python os.remove("nom_physique")
Algo. renommer (Nom logique, nouveau nom physique) Donner un nouveau nom physique à un
Python os.rename(encien nom phy, nouveau nom phy) fichier associé par un nom logique.

Algo. tronquer (nom logique) Elimine les caractères du fichier se


trouvant à partir de celui indiqué par le
Python Nom_logique.truncate ( ) pointeur (fichier ouvert en ajout)
Fonction Rôle
Algo. position fichier (nom logique) Retourne le numéro de caractère pointé
Python Non_logique.tell() actuellement.
Exemple d’accès direct sur un fichier texte :
Affichage inverse des informations enregistrées dans le fichier « eleve.txt » réalisé précédemment.
 Algorithme
Algorithme Acces_Direct_fichier_texte
Début
Associer (f, "C:\classes\eleve.txt")
Ouvrir (f) T.D.O Objet Type
nb_caractere = 0 f texte
Tant que non fin_fichier (f) faire ch chaine
| Lire_nl ( f , ch) i entier
| nb_caractere = nb_caractere + long (ch) + 1 C caractère
Fin Tant que
Pour i de nb_caractere -1 à 1 (pas = -1) faire
| pointer ( f, i )
| lire ( f, C)
| Afficher ( C )
Fin Pour
Fermer (f)
Fin

Prof. : Ben Amor Mosbah A.S. : 2020/2021


Lycée Douz Filière : Sciences informatique
 Implémentation en Python
# ouverture du fichier en lecture
f = open("eleve.txt","r")
# nombre de ligne dans le fichier (car readlines() retourne une liste)
nbligne = len(f.readlines())
f.seek(0) # remettre le pointeur sur le premier caractère
# le nombre total de caractères dans le fichier est:
# nombre de caractère imprimable + les caractères de fin de lignes sauf la dernière ligne
nbcaractere=len(f.read()) + nbligne-1
for i in range (nbcaractere-1,-1,-1):
f.seek(i) # pointer le caractère à lire
print(f.read(1)) # Lecture d'un seul caractère

Prof. : Ben Amor Mosbah A.S. : 2020/2021

Vous aimerez peut-être aussi