Chap5 6 Python
Chap5 6 Python
Chap5 6 Python
Chapitre 5
Fichiers
Pour travailler avec des fichiers que ce soit en lecture ou en écriture, il est nécessaire de créer
un lien logique entre le programme (code source en python) et les données. On parle
d’ouverture de fichier (création d’un lien entre les données et le programme), ce lien est détruit
lors de la fermeture du fichier de données.
re w
a Python rit
Input file d e Output file
Exemple :
obFichier = open(‘MonFichier’,’a’)
obFichier : objet_fichier pour accéder au fichier via un programme python
MonFichier : nom du fichier de données à ouvrir en accès, MonFichier doit être
dans le répertoire courant, sinon il faut indiquer le chemin d’accès ou changer de
répertoire avant la fonction open() – avec la méthode chdir (voir ci-dessous).
a : mode d’ouverture du fichier ‘a’pour append = mode écriture avec ajout des nouvelles
données en fin de fichier.
Mais le Python qui est un langage de script permet de changer le répertoire courant
pendant l’exécution du programme.
>>> from os import chdir
>>> chdir("/home/devauchelle/mesDonnees »)
>>> ofi = open(‘monFichier’,’r’)
Le répertoire courant est désormais mesDonnees et même si le programme a été lancé
depuis /home/devauchelle/coursPython, le programme pourra ouvrir ‘MonFichier’
qui est dans le répertoire mesDonnees puisque c’est le répertoire courant (grâce à la fonction
chdir() – change directory - du module os - operating sytem)
Méthode Description
readlines() Lit l’ensemble des lignes d’un fichier et les met dans une liste
xreadlines() Méthode efficace pour la lecture de l’ensemble des lignes d’un gros fichier
Cette fonctionnalité est souent intéressante, par exemple pour passer à un programme le nom
des fichiers d’entrée sur lesquels il va travailler.
Exemple
myprog.py nom_fichier1 nom_fichier2
f1= open(argv[1],’r’) #nom_fichier1 ouvert en lecture
f2 = open(argv[2],’w’) #nom_fichier2 ouvert en écriture
Dans les langages de niveau élevé comme Python, il est possible d’associer un mécanisme de
surveillance à tout un ensemble d’instructions et donc de simplifier la gestion des erreurs qui
peuvent se produire dans n’importe laquelle des ces instructions sous surveillance.
filename = raw_input(‘Entrez un nom de fichier : ’)
try :
f=open(filename,’r’)
except :
print "le fichier",filename,"est introuvable"
Chapitre 6
Expressions rationnelles
Les shells Unix (bash,csh,sh ...) utilisent nativement des expressions régulières pour les
recherches de fichiers (grep). De même les programmes développés sous Unix tels que sed,
awk, Perl, Python et bien d’autres utilisent la puissance des expressions rationnelles.
Caractère Signification
[a-zA-Z] Les tirets à l’intérieur des crochets désignent un ens. de caractères consécutifs.
(m,n) Caractère ou expression qui précède les accolades peut figurer entre m et n fois
Raccourci Signification
attention les expressions regulières indiquées dans ce cours sont à vérifier !!!
4 – Le module re
Le module re est le module qui contient les fonctions permettant les recherches d’expressions
rationnelles (regexp pour regular expression).
FonctionDescriptionsearch(regexp,string)Renvoie un MatchObject
correspondant à la recherche de regexp dans la chaîne string. Recherche le motif où qu’il
soit dans la chaîne.match(regexp,string)Renvoie None si la chaîne ne correspond pas
et un MatchObject sinon.
Exemples :
>>> s = ‘abababeaba’
>>> import re
>>> rgx = ‘a(be)+’
>>> re.search(rgx,s)
<_sre.SRE_Match object at 0x94760>
>>> rge = ‘abc’
>>> re.search(rge,s) # il ne se passe rien
>>> re.match(rge,s) # il ne se passe rien
>>> re.match(rgx,s) # il ne se passe rien
λ5 - La classe MatchObject
La classe MatchObject définit les méthodes pour accéder au résultat de la recherche pour
accéder au résultat de la recherche.
Les méthodes les plus courantes sont start() et end() qui donnent les indices de début et
de fin de la sous-chaîne trouvée.
>>> s = ‘abababeaba’
>>> rgx = ‘a(be)+’
>>> m = re.search(rgx,s)
>>> m.start()
4
>>> m.end()
7
Remarque importante :
La construction d’une expression régulière est longue pour l’interpréteur, donc si c’est une
expression régulière que vous devez utiliser plusieurs fois, il faut la compiler.
>>> motif1 = re.compile(‘a(be)+’)
motif1 est une expression rationnelle compilée sur laquelle on peut appliquer les méthodes des
expressions régulières.
Exemple :
>>> m = motif1.search(s)
>>> m.start()
4
>>> m.end()
7
Exercices du TD3