Vous êtes sur la page 1sur 3

Les fichiers

Ce sont les données enregistrées sur un support non volatile. Pour l’utiliser il faut l’ouvrir
d’abord dans le mode convenable.
Création et ouverture d’un fichier
Nom_logique = open(nom_fichier_physique , mode, encoding) avec le mode est :
- ‘r’ (read) le mode lecture pour en lire, génère une erreur s’il n’existe pas.
- ‘w’ (write) le mode écriture pour y écrire, crée le fichier s’il n’existe pas.
- ‘a’ (append) le mode append pour l’ajout à la fin, crée le fichier s’il n’existe pas.
- ‘x’ crée le fichier et affiche une erreur s’il existe déjà.
Python utilise les fichiers en mode texte par défaut (mode t). Pour les fichiers binaires, il faut
préciser le mode b. On utilise aussi le mode b pour que les données du fichier ne soient pas
affichées.
Le paramètre optionnel encoding assure les conversions entre les types byte, stocké dans le
fichier sur le disque, et le type str, manipulé lors des lectures et écritures.
Exemples : ouverture en mode par défaut (texte).
f1 = open("path/monFichier_1","r", encoding='utf8') #"r" mode lecture du
#fichier dans le répertoire indiqué
#le encoding='utf8' permet d’utiliser le contenu codifié dans un
#langage non latin comme l’arabe, le chinois, etc
f2 = open("monFichier_2","w", encoding='utf8') # "w" mode écriture.
# Ecrase l’ancien contenu s’il existe et le crée s’il n’existe pas
f3 = open("monFichier_3","a", encoding='utf8') #"a" mode ajout et se
#positionne à la fin du fichier
f4 = open("monFichier_4","wt") # "wt" mode écriture texte
f5 = open("monFichier_5","wb") # "wb" mode écriture binaire

Vérification de l’existence d’un fichier


Avant d’ouvrir un fichier on peut vérifier son existence à l’aide de isfile(nom_fichier)
Fermeture d’un fichier
Tout fichier ouvert doit être fermé pour assurer bien les modifications qui lui sont faites. La
fermeture est réalisée par l’instruction :
nom_fichier.close()
Ecriture dans un fichier
On ne peut écrire que dans un fichier ouvert en mode write ou bien append ou w+ (read/write)
nom_finom_fich.write(chaine) #écrit dans le fichier la chaine entre les
parenthèses et retourne le nombre de caractères écrits
nom_fich.writeline(chaine) #écrit la chaîne comme étant une ligne (terminée
par \n)
nom_fich.writelines(liste) #écrit une liste de chaînes dans le fichier
Exemple
file1=open("fichtest.txt","a+") #ouverture en mode ajout en lecture et écri
ture
file1.write("bon\n")
file1.write("jour\n")
file1.write("les\n")
file1.write("amis\n")
file1.seek(0) #positionner le curseur de lecture au début du fichier
print(file1.read()) #Lit et affiche le contenu du fichier
file1.close()

Page 1
Lecture d’un fichier
Les instructions qui permettent de lire les données à partir d’un fichier sont :
Nom_fich.read() : lit tout le contenu à partir de la position courante du curseur. Si on met un
entier n entre les (), il lit n caractères à partir de la position courante
Nom_fich.readline() : lit le contenu à partir de la position courante du curseur jusqu’au
premier caractère de fin de ligne ou bien au caractère \n
Nom_fich.readlines() : lit la liste des lignes (des chaînes) du fichier à partir de la position
courante
Exemple
file1 = open("myfile.txt","r+")
print(file1.readlines())
print('1',file1.readlines())#n'affiche rien du tout car le curseur est posi
tionné à la fin du fichier
file1.seek(0) #repositionner le curseur au début du fichier
print('2- ',file1.readlines()) #affiche le contenu à partir du début
file1.seek(10) #avance de 10 octets par rapport au début
file1.read(5) #affiche les 5 caractères suivants
print("3- ",file1.readlines()) #affiche à partir de la dernière position
jusqu’à la fin du fichier
file1.close()
Parcours d’un fichier sans open ni close
f = open("fichtest.txt", "r")
for ligne in f:
print(ligne)
Ouverture / lecture et fermeture en une seule instruction
with open(nom_fichier) as alias: with open(nom_fichier) as alias:
print(alias.readlines()) liste = alias.readlines()

Exemple
with open("fichtest.txt") as f:
print(f.readlines())
with open("fichtest.txt") as f:
print(f.read())
Autres méthodes sur les fichiers
Nom_fich.closed() donne True si le fichier est fermé
Nom_fich.tell() donne le numéro de l’octet sur lequel le curseur est positionné.
import os
os.rename(source, destination)
Autres méthodes pour écrire sur les fichiers : le package pickle
Python Pickle est utilisé pour sérialiser et dé-sérialiser une structure d'objet python. Tout objet
python peut être modifié afin qu'il puisse être enregistré sur le disque. Dans un premier temps,
la bibliothèque Python pickle sérialise l'objet, puis convertit l'objet en un flux de caractères
afin que ce flux de caractères contienne toutes les informations nécessaires pour reconstruire
l'objet dans un autre script python. Il est presque l’équivalent du format JSON (Java Script
Object Notation).

Les étapes :
 Ouvrir le fichier en mode écriture binaire « wb »

Page 2
 Ecrire sur le fichier : pickle.dump(Objet, nom_fichier, mode)
o Le premier paramètre est l’objet à écrire (entier, chaîne de caractère, liste, tuple, set ou
dictionnaire).
o Le second contient le nom du fichier physique.
o Le troisième est optionnel représente le mode qui est
pickle.HIGHEST_PROTOCOL ou pickle.DEFAULT_PROTOCOL. Par défaut c’est le second.
 Fermer le fichier par nom_fichier.close()
Exemple
import pickle
# On suppose qu'on a un dictionnaire D
# ouvrir le fichier en mode binaire
fichier = open('fichierDict', 'wb')
# dump (écrire) la structure de donnée dans le fichier
pickle.dump(D, fichier)
# Fermer le fichier
fichier.close()

Lecture à partir d’un fichier dumped


C’est très simple. Ouvrir le fichier en mode read binary ‘rb’. Puis lire à l’aide de l’instruction
recepteur = pickle.load(nom_fichier).
Exemple
import pickle
# ouvrir le fichier dans lequel on a écrit le contenu
fichier = open('fichierDict', 'rb')
# Lire l'information qui y est contenue
D = pickle.load(fichier)
# Fermer le fichier
fichier.close()

Application
Sauvegardez le dictionnaire d et la liste e, donnés ci-dessous, dans un fichier puis lire et
afficher ces objets à partir du fichier.
d={5:[3,4,9],'c':14}
e=[10,20,30]

Réponse
import pickle
d={5:[3,4,9],'c':14}
e=[10,20,30]
fichier = open('fichierDict', 'wb')
# dump (écrire) la structure de donnée dans le fichier
pickle.dump(d, fichier)
pickle.dump(e, fichier)
# Fermer le fichier
fichier.close()

fichier = open('fichierDict', 'rb')


# Lire l'information qui y est contenue
d1 = pickle.load(fichier) # Lit un objet à partir du fichier
e1 = pickle.load(fichier) # Lit un autre objet à partir du fichier
print("d1 = \n",d1)
print("e1 = \n",e1)
fichier.close()

Résultat
d1 =
{5: [3, 4, 9], 'c': 14}
e1 =
[10, 20, 30]

Page 3

Vous aimerez peut-être aussi