Il est facile de manipuler des fichiers en Python afin d'enregistrer des informations de manière persistante et pouvoir les retrouver plus tard.
Cette aide s'intéresse aux fichiers où les informations sont stockées sous forme de texte. ( et pas les fichiers binaires )
Avant de pouvoir manipuler un fichier, il faut l'ouvrir en lecture ou en écriture; on utilise pour cela la structure with open()
avec plusieurs options possibles :
with open('nom_du_fichier.txt','r') as fichier: # 'r' = read
......
with open('nom_du_fichier.txt','w') as fichier: # 'w' = write
......
Si le fichier n'existe pas, il est créé par cette instruction. SI le fichier existe déjà, son contenu est effacé et remplacé par le nouveau.
with open('nom_du_fichier.txt','aw') as fichier: # 'a' = append
.....
Dans ce cas, si le fichier existe, le nouveau contenu est ajouté à la fin du fichier sans écraser le contenu qui s'y trouve déjà.
La variable fichier
contient alors l'ensemble des informations stockées dans le fichier.
L'utilisation de la structure with open()
au lieu d'un simple open(
) permet de fermer correctement le fichier en fin de structure, ce que ne permet pas l'instruction open()
, pour laquelle il faut
penser soi-même à fermer le fichier.
Un fichier texte est organisé en lignes séparées par un saut de ligne. Ce saut de ligne est enregistré dans les fichiers sous la forme du caractère non-imprimable : '\n
' sous Linux,
ou des deux caratères non-imprimables '\r\n
' sous Windows ( attention alors à la provenance du fichier...)
( Un éditeur de texte n'affichera pas ce(s) caractère(s) mais comprendra qu'il faut revenir à la ligne. )
Il existe plusieurs manière d'extraire les informations :
ligne = fichier.readline()
La variable ligne
contient une chaîne de caractères correspondant à la ligne lue. Cette chaîne se termine toujours par le ( ou les ) caractère(s) de saut de ligne '\n
' ( ou '\r\n
' ).
L'instruction passe ensuite automatiquement à la ligne suivante.
liste = fichier.readlines()
Chaque élément de la liste liste
contient une chaîne de caractères ( terminée également par le ( ou les ) caractère(s) '\n
' ou '\r\n
'), qui correspond au contenu d'une des lignes du fichier.
La variable fichier est un objet itérable, on peut donc la parcourir comme les caractères d'une chaîne ou les éléments d'une liste :
for ligne in fichier :
............
Dans tous les cas, on se retrouve avec le ( ou les ) caractère(s) de saut de ligne en fin de chaîne; pour supprimer ce(s) caractère(s) et ne garder que l'information "utile" de la ligne, utiliser la fonction rstrip()
:
ligne = ligne.rstrip('\n') # fichier créé sous Linux
ligne = ligne.rstrip('\r\n') # fichier créé sous Windows
La fonction a utiliser est write()
:
fichier.write(ligne)
La variable ligne
contient la chaîne de caractères à écrire. Si elle ne se termine pas par le ( ou les ) caractère(s) de saut de ligne, alors l'écriture suivante se fera à la suite de cette ligne.
fichier.write(liste)
La liste liste
contient l’ensemble des lignes à écrire.