• Aucun résultat trouvé

3. Lire/écrire des fichiers avec python

N/A
N/A
Protected

Academic year: 2021

Partager "3. Lire/écrire des fichiers avec python"

Copied!
2
0
0

Texte intégral

(1)

Info

3. Lire/écrire des fichiers avec python

1

Ce 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~

(2)

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~

Références

Documents relatifs

print (’voici la valeur de a et b : ’,a,’ ’,b) (pour faire plusieurs affichages) print(’coucou’,end=’ ’) (pour annuler le retour à la ligne après l’affichage)

Activité2 : Pour tester le code précèdent sur un simulateur, on va utiliser l'éditeur en ligne https://create.withcode.uk/ , retrouver le même code à

ni comme exclusif (une fonction ou une commande absente de cette liste n'est pas interdite : si un candidat utilise à très bon escient d'autres fonctions MAIS sait aussi répondre

➔ toujours placer une espace après une virgule, un point-virgule ou deux-points ;. ➔ ne jamais placer d’espace avant une virgule, un point-virgule ou

Dans un nouveau programme SABLE, créer une fonction prix() qui renvoie le prix à payer quand on connaît la quantité de sable acheté..

Ecrire une fonction ´ saisie qui effectue une saisie valide et renvoie la valeur saisie sous forme d’une chaˆıne de caract` eres. Ecrire une fonction ´ proportion qui re¸coit

import absmod3 cherche dans le répertoire courant le fichier absmod3.py , puis dans la liste des répertoires définis dans la variable d’environnement PYTHONPATH et enfin dans

Ecrire une script Python qui prend en argument un fichier texte et qui renvoie un fichier texte avec le contenu du fichier texte mais sans les sauts de lignes.. Ecrire un script