1.5 Importation et exportation de données textuelles

Dans le calcul scientifique, il est essentiel de pouvoir fournir des informations à l'ordinateur (input) et de pouvoir récupérer le résultat du traitement des données (output). Cette communication avec la machine au travers de Python passe souvent par la lecture et l'écriture de fichiers textes.

La fonction np.loadtxt(fname) de NumPy permet de lire et d'exploiter un fichier texte contenant des données placées dans une ou plusieurs colonnes séparées par un délimiteur (en général un (ou plusieurs) espace(s)). Le paramètre optionnel delimiter permet de choisir un délimiteur particulier.

La fonction np.savetxt(fname) de NumPy permet quant à elle la sauvegarde de données dans un fichier texte.

Lecture de données

Pour comprendre comment utiliser les deux fonctions évoquées ci-dessus, nous allons considérer le fichier texte suivant, obtenu lors d'une expérience de chute libre.

Fichier texte 'ChuteLibreData.txt' :

Données collectées (masse m en chute libre) Date : 20 février 2025 No de la mesure Temps[s] Distance parcourue[m] Incertitude[m] 0 0 0 0 1 0.51 1.41 1.5 2 1.01 4.39 2.3 3 1.49 11.9 2.5 4 2. 20.7 2.9 5 2.5 28.8 2.7 6 2.99 45.9 2.9

Le code suivant permet par exemple de récupérer les trois premières colonnes (paramètre usecols de np.loadtxt) du fichier ChuteLibreData.txt sans tenir compte des quatre premières lignes (paramètre skiprows de np.loadtxt) :

import numpy as np Data_array = np.loadtxt('ChuteLibreData.txt', usecols = (0,1,2), skiprows = 4, unpack = False) print(np.shape(Data_array)) identification, xdata, ydata = np.loadtxt('ChuteLibreData.txt', usecols = (0,1,2), skiprows = 4, unpack = True) print(xdata)

Lorsque le paramètre unpack de np.loadtxt prend la valeur True (la valeur False est la valeur par défaut), le tableau produit est transposé ce qui permet de récupérer les données (colonnes) dans des tableaux unidimensionnels (quatrième ligne du code ci-dessus).

Sortie (résultat) du code Python ci-dessus :

(7, 3) [0. 0.51 1.01 1.49 2. 2.5 2.99]
Ecriture de données

La structure générale de la fonction np.savetxt est la suivante :

np.savetxt(nom_du_fichier, tableau, fmt="%0.18e", delimiter=" ", newline="\n", header="", footer="", comments="# ")

Le code suivant fournit un exemple concret de sauvegarde de données. Il utilise les données que nous avons déjà rencontrées plus haut :

import numpy as np identification, xdata, ydata, erreur = np.loadtxt("ChuteLibreData.txt", skiprows=4, unpack=True) informations = 'Données de la chute libre après avoir été retravaillées' informations += '\nDate de creation : 22 février 2025' informations += '\nVersion : 2.02' informations += '\n\n\nMesure-' informations += 'temps (en s)-' informations += 'distance (en m)-' informations += 'erreur estimée (en m)' np.savetxt('ChuteLibreDataOut.txt', np.transpose([identification, xdata, ydata, erreur]), header=informations, fmt="%5.2f")

Le mot clé header de np.savetxt permet de placer une en-tête au-dessus des données, alors que le mot clé footer est utilisé pour clore le tableau par une série de commentaires.

Sortie (résultat) du code Python :

# Données de la chute libre après avoir été retravaillées # Date de creation : 22 février 2025 # Version : 2.02 # # # Mesure-temps (en s)-distance (en m)-erreur estimée (en m) 0.00 0.00 0.00 0.03 1.00 0.51 1.31 0.02 2.00 1.01 4.99 0.03 3.00 1.49 10.90 0.03 4.00 2.00 19.70 0.03 5.00 2.50 29.80 0.03 6.00 2.99 43.90 0.02