BotafogoImportation 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="# ")- Premier argument : nom du fichier texte à créer.
- Deuxième argument : tableau devant être écrit dans le fichier. Si les données que l’on cherche à sauvegarder se trouvent dans plusieurs tableaux unidimensionnels, il faut les rassembler en un seul tableau.
- Les autres arguments sont optionnels et peuvent parfois être compliqués à appréhender. Ainsi, l’option de formatage, décrite dans celien, permet de décrire précisément comment les valeurs doivent être représentées. L’argument
fmt=”%0.18e”permet d’obtenir un affichage à 18 décimales en notation scientifique (exponentielle). Dans l’exemple ci-dessous, nous nous contentons de deux chiffres après la virgule et d’une largeur de colonne minimale de 5.
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 Polycopié rédigé par Roger Sauser, CMS. Sauf indication contraire, le contenu de ce document est soumis à une licence Creative Commons internationale, Attribution - Utilisation non commerciale - Partage dans les mêmes conditions 4.0 International (CC BY-NC-SA 4.0).
© 2026 Projet Botafogo. En savoir plus.