CPGE OUJDA Sup
Les fichiers en Python
Introduction
Un fichier stocke des informations sur un support physique : disque dur, CD, DVD, clé USB, CD, …
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. Une organisation structurée est, en général, associée à ce type de fichiers.
Les fichiers binaires : l'information est stockée sous forme binaire
Open(Ouverture)
Fonction "open()"
open(filename, mode).
mode
“w” = “write mode”
“a” = “append mode”
“wb” = “write in binary”
“r” = “read mode” (default)
“rb” = “read in binary”
“U” = “lit les fichiers avec Unix or Windows avec fin de lignes
input_file = open(“in.txt")
output_file = open(“out.txt", "w")
Lecture écriture
L'écriture dans un fichier se fait avec la fonction
write() en mode écriture.
La lecture de données d'un fichier se fait avec la fonction read() en mode écriture
unFichier = 'datat.txt'
fw = open(unFichier,'w') # la fonction open() retourne un objet
# écriture dans le fichier avec la méthode write()
fw.write("Mes premières aventures avec les fichiers!')
# fermeture du fichier avec la méthode close()
fw.close()
fr= open(unFichier,'r')
info=fr.read()
print(info)
fr.close()
Fichiers textes
Les fichiers texte sont structurés en lignes et en pages.
Afin de traiter plus facilement un fichier texte on utilisera le marqueur de fin de ligne.
La fonction readline() lira toute une ligne du fichier en y incluant le marqueur de fin de ligne
Sous Windows : séquence de deux octets, retour chariot +
saut de ligne
Fichiers binaires
L'encodage binaire utilise une représentation proche de la machine.
Le module "pickle" permet de traiter des fichiers en mode binaire.
La méthode dump() permet d'écrire des données de toutes sortes dans un fichier.
La méthode load() permet de lire des données de toutes sortes dans un fichier.
Exemple :
from pickle import *
unFichier = 'databin.txt'
fw = open(unFichier,'wb')
info =[10,20,30]
dump(info, fw)
info= 100
dump(info, fw)
info = "essai"
dump(info, fw)
fw.close()
fr= open(unFichier,'rb')
try :
while 1 : info=load(fr) print(info)
except :
fr.close()
L'instruction with
L'instruction with permet d'éviter d'utiliser un mécanisme d'exceptions afin de lire ou écrire dans un fichier
Exemple :
![Zone de Texte:
from pickle import *
unFichier = 'databin.txt'
fw = open(unFichier,'wb')
info =[10,20,30]
dump(info, fw)
info= 100
dump(info, fw)
info = "essai"
dump(info, fw)
fw.close()
fr= open(unFichier,'rb')
with fr:
info=load(fr)
print(info)
Ou bien
from pickle import *
unFichier = 'databin.txt'
fw = open(unFichier,'wb')
info =[10,20,30]
dump(info, fw)
info= 100
dump(info, fw)
info = "essai"
dump(info, fw)
fw.close()
with open(unFichier,'rb') as fr
info=load(fr)
print(info)](fichierspython_fichiers/image001.gif)
Exercices :
Ex. 1. Écrire une fonction qui renvoie un dictionnaire composé de chaque mot contenu dans le fichier
dico.txt (à créer) (la valeur associée à la clef n’a pas d’importance dans cet exercice). Le fichier dico.txt est composé de lignes contenant chacune un mot en majuscule. Chaque mot est unique.
Ensuite, écrire une fonction qui vérifie qu’un mot donné en paramètre est bien dans ce dictionnaire.
dico
=
load_dico("dico.txt")
print(is_in_dico("bonjour",dico)) #-> True
Ex. 2. Écrire une fonction qui renvoie un dictionnaire contenant le nombre d’occurrences de chaque mot du fichier hamlet.txt qui est à creer.
Créez ensuite une fonction qui détermine le mot le plus utilisé dans ce texte.
dico
=
occurences_of_words("hamlet.txt")
print(most_frequent_word(dico)) # -> THE
Ex. 3. Soit le fichier address.dat suivant :
LastName : Ahmed FirstName : Ouali Office : UB4.131
Phone : 026503766
================== LastName : Ali FirstName : Benali
Les entrées sont séparées par une ligne de 20 signes =. Elles sont composées de champs de forme cle : valeur séparés par des retour à la ligne. Les champs LastName et d’un FirstName sont obligatoires et les champs Office et Phone sont optionnels. L’ordre des entrées et des champs n’a pas d’importance.
Écrire un programme qui permet :
– de charger le carnet d’adresse dans une liste de dictionnaires,
– d’afficher le carnet d’adresse
– d’ajouter une entrée dans le carnet d’adresse,
– de supprimer une entrée dans le carnet d’adresse et
– de sauvegarder le carnet d’adresse dans le fichier address.dat