Info
3. Lire/écrire des fichiers avec python
1Ce tutoriel présente les instructions de base dont nous aurons besoin pour lire des fichiers de données.
Ouvrir un fichier :
On considère que le fichier est dans le même répertoire que le script.
Soit le fichier texte, appelé « data.txt » dont le contenu est :
0 1
1 3
4.5 6
7.8 2.5
Chaque valeur d’une même ligne est séparée par une tabulation.
Pour ouvrir un fichier on utilise l’instruction open()
fichier=open("data.txt","r") #on ouvre le fichier data.txt, en mode lecture (d’où le
« r » comme read)
Lecture du contenu entier d’un fichier :
On utilise l’instruction read() fichier=open("data.txt","r") contenu=fichier.read() print(contenu)
Le programme suivant affiche : '0\t1\n1\t3\n4.5\t6\n7.8\t2.5'
Inexploitable en tant que tel, il faut manipuler le résultat.
Première remarque : c’est un type composite de type ‘string’.
Deuxième remarque : ‘\t ‘ correspond à une tabulation et ‘\n’ est le caractère réservé pour « retour à la ligne ». contenu est donc cohérent avec ce que l’on a dans le fichier.
On veut à partir du fichier texte, créer les deux listes suivantes :
t=[0,1,4.5,7.8] et x=[1,3,6,2.5] pour tracer x en fonction de t par exemple.
il faut tout d’abord « couper » contenu pour enlever les ‘\t’ et les ‘\n’
Pour cela on utilise l’instruction split() : t1=contenu.split('\t')
Cette ligne donne :
['0', '1\n1', '3\n4.5', '6\n7.8', '2.5']
On voit qu’à chaque fois qu’il y un ‘\t’, on coupe contenu, et on place les éléments dans une liste. Reste à continuer en « coupant » les ‘\n’.
t2=[]
for i in range(len(t1)):
t2.append(t1[i].split('\n'))
1 Ce tutoriel n’est absolument pas complet, et présente une manière de lire les fichiers. La version de python utilisée est 3.3.5 .
~1~
Info
Ce programme donne :
[['0'], ['1'], ['1'], ['3'], ['4.5'], ['6'], ['7.8'], ['2.5']]
Et on rajoute :
t2=[t2[i][0] for i in range(len(t))]
pour obtenir
['0', '1', '1', '3', '4.5', '6', '7.8', '2.5']
Reste à créer les listes pour les tracés : t=[]
x=[]
for i in range(int(len(t2)/2)):
t.append(float(t2[2*i])) x.append(float(t2[2*i+1]) Ce qui donne :
>>> t
[0.0, 1.0, 4.5, 7.8]
>>> x
[1.0, 3.0, 6.0, 2.5]
L’exploitation est donc maintenant possible.
Il est possible d’utiliser d’autres instructions comme readlines () : fichier=open("data.txt","r")
contenu=fichier.readlines() print(contenu)
Ce programme affiche :
['0\t1\n', '1\t3\n', '4.5\t6\n', '7.8\t2.5']
Le programme suivant abouti au même résultat que le précédent : fichier=open("data.txt","r")
contenu=fichier.readlines() t=[]
x=[]
for i in range(len(contenu)):
a=contenu[i].split('\n') b=a[0].split('\t')
t.append(float(b[0])) x.append(float(b[1]))
Une fois la lecture terminée, on ferme le fichier, pour éliminer les problèmes d’accès à ce même fichier par d’autres applications par exemple :
fichier.close()
~2~