Les fichiers en Python

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 )

Ouverture d'un fichier

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 :

  1. pour une ouverture en lecture seule :
    
    with open('nom_du_fichier.txt','r') as fichier: # 'r' = read
    	......			
    					
  2. pour une ouverture en écriture :
    
    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.

  3. pour une ouverture en écriture en fin de fichier :
    
    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.

Lecture et écriture dans un fichier

Lecture

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 :

  1. Lecture d'une ligne et passage à la suivante :
    
    	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.

  2. Lecture de toutes les lignes du fichier :
    
    	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.

  3. Parcours 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
				

Écriture

La fonction a utiliser est write() :

  1. Écriture d'une ligne :
    
    	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.

  2. Écriture d'une liste de lignes :
    
    	fichier.write(liste)	
    					

    La liste liste contient l’ensemble des lignes à écrire.