theme 8
TRANSCRIPT
1
THEME 8
LES FICHIERS2011-03-24
2
UN FICHIER TEXTE fichierTeste.txt
[email protected] est une ligne dans mon_fichierEncore Une autre ligne1- Premier élément de liste2- 2 eme élément de liste
3- des nombres: 1 2 3 4 5 6 7 8 9
1
Marqueur de fin de ligne
3
DIFFÉRENTS TYPES DE FICHIERS
Fichiers texte: lisibles par les humains, à l’aide d’un éditeur de texte (word, wordPad, Bloc notes,etc,)
Fichiers binaires: doivent être décodés par un logiciel spécifique Exemple: images, son, vidéos, etc.
4
En Python: un type de données est associé aux fichiers
Opérations sur un fichier avec Python Ouverture Fermeture Lecture Écriture
5
EMPLACEMENTS DE FICHIERS (1/2)
Récupérer le dossier courant où pointe le programme (get current working directory)
import os rep_cour = os.getcwd()
Pointer sur un autre dossier (change directory) os.chdir("c:/test1")
6
EMPLACEMENTS DE FICHIERS (2/2)
Exemple: créer le dossier ‘Fichiers Tp Python’ sur ‘c:/’
Tester le script suivant
import os
print os.getcwd()
os.chdir("C:/Fichiers Tp Python")
print os.getcwd()
7
OUVERTURE D’UN FICHIER
Associer un fichier dont on spécifie le nom à une variable
Trois modes d’ouverture
En lecture: Lire le fichier dès son début, ligne par ligne f1 = open(monFichier_1, "r") # en lecture (read)
En écriture: Écraser l’ancien contenu et écrire par dessus f2 = open(monFichier_2, "w") # en écriture (write)
En ajout: Écrire à la suite de l’ancien contenu f3 = open(monFichier_3, "a") # en ajout (append)
8
FERMETURE D’UN FICHIER
Syntaxe: f1.close()
Permet de rendre le fichier disponible pour d’autres traitements Exemple: après avoir lu un fichier, nous désirons
écrire dedans et le relire à nouveau
9
LECTURE D’UN FICHIER Etape 1: Ouverture du fichier en mode lecture
f = open("monFichier_1", "r")
Etape 2: Appeler la fonction read (+srs synatxes)
s = f.read() # lit tout le fichier :: string
s = f.read(n) # lit au plus n caractères:: string
s = f.readline() # lit la ligne suivante :: string
s = f.readlines() # lit tout le fichier :: liste de strings
for ligne in f: print ligne # bon procédé de parcours d’un fichier
Etape 3: Fermer le fichier f.close()
10
EXEMPLE: OUVERTURE D’UN FICHIER
Créer dans le dossier précédent un fichier avec un éditeur de texte tst.txt dont le contenu est le suivant
Ecrire un script en Python pour l’ouvrir en lecture et afficher son contenu selon les différentes méthodes
Début de mon fichierLigne 1Ligne 2Ligne 3Fin de mon fichier
11
ÉCRITURE DANS UN FICHIER (1/2)
Etape 1: Ouverture du fichier en mode écriture (write) f3 = open("nomPrenom", "w")
Etape 2: Appeler la fonction write
tmpNomPrenom= "Bouchard, Josee" f3.write(tmpNomPrenom) # ecriture d’une ligne
lst = [’a’, ’b’, ’c’]f3.writelines(lst) # ecriture d’un ensemble de lignes
print >> f3, "abcd" # ecrit dans f3 en mode ajout
Etape 3: Fermer le fichier f.close()
12
EXEMPLE: ECRITURE DANS UN FICHIER
A l’aide d’un script Python, ouvrir le fichier tst.txt en mode écriture, saisir le contenu suivant
Ouvrez le fichier et consultez son contenu. Que constatez vous?
Je viens de saisir du nouveau contenuEst-ce que l’ancien contenu va rester?Est-ce qu’il sera écrasé?
13
ÉCRITURE DANS UN FICHIER (2/2)
Etape 1: Ouverture du fichier en mode ajout (append) f3 = open("nomPrenom", "a")
Etape 2: Appeler la fonction write
Etape 3: Fermer le fichier f.close()
14
EXEMPLE: ECRITURE DANS UN FICHIER
A l’aide d’un script Python, ouvrir le fichier tst.txt en mode ajout, saisir le contenu suivant
Ouvrez le fichier et consultez son contenu. Que constatez vous?
Quelle est la différence entre l’écriture en mode write et append?
Je viens d’ajouter du nouveau contenuEst-ce que ca change quelque chose?
15
NOMS DE FICHIERS ET DE DOSSIERS
Que se passe-t-il si le nom de fichier ou dossier entré en paramètre n’existe pas lorsqu’il est appelé dans:
fichier1 = open(nomFichier1,"r") ? fichier2 = open(nomFichier2,"w") ? fichier3 = open(nomFichier3,"a") ?
os.chdir(chemin)
16
TRAITER L’EXCEPTION D’OUVERTURE DE FICHIER
Si nous désirons ouvrir un fichier dont le nom n’existe pas ou qui existe dans un répertoire autre que le répertoire courant: le programme génère une exception !
IOError: [Errno 2] No such file or directory:
Pour dépasser le bloc qui génère l’exception
Try: f1= open(nomFichier1,"r")
Except: # bloc à exécuter en cas de génération d’exception
print "Le fichier " , nomFichier1,"n’existe pas"
17
LE MODULE «PICKLE»
Il permet la conservation des types :import pickle
a, b = 5, 2.83f = open("monFichier.txt", "w") # en ´ecriturepickle.dump(a, f)pickle.dump(b, f)f.close()
f = open("monFichier.txt", "r") # en lecturet = pickle.load(f)print t, type(t) # 5 <type ’int’>t = pickle.load(f)print t, type(t) # 2.83 <type ’float’>f.close()
18
EXERCICE 1
Ecrivez un script qui permette d’encoder un fichier texte dont les lignes contiendront chacune les informations relatives à une personne donnée comme suit nom, prénom, adresse, code postal et no de téléphone
(Considérez par exemple qu’il s’agit des membres d’un club).
19
EXERCICE 2
Considérons que vous avez a votre disposition un fichier texte contenant des phrases de différentes longueurs.
Ecrivez un script qui recherche et affiche la phrase la plus longue.
20
EXERCICE 3
A partir de deux fichiers préexistants A et B, construisez un fichier C qui contienne alternativement un élément de A, un élément de B, un élément de A... et ainsi de suite jusqu’a atteindre la fin de l’un des deux fichiers originaux.
Complétez ensuite C avec les éléments restant sur l’autre.