La manipulation de fichiers est une compétence essentielle pour tout développeur Python. Que vous travailliez sur l’analyse de données, le développement web ou l’automatisation de tâches, la capacité à lire, écrire et parser des fichiers est cruciale.
Lecture de fichiers
Lecture basique
La méthode la plus simple pour lire un fichier en Python utilise la fonction open()
avec un gestionnaire de contexte with
:
with open('mon_fichier.txt', 'r') as fichier:
contenu = fichier.read()
print(contenu)
Lecture ligne par ligne
Pour les fichiers volumineux, la lecture ligne par ligne est plus efficace :
with open('mon_fichier.txt', 'r') as fichier:
for ligne in fichier:
print(ligne.strip())
Écriture de fichiers
Écriture basique
Pour écrire dans un fichier, utilisez le mode ‘w‘ (écriture) ou ‘a’ (ajout) :
with open('nouveau_fichier.txt', 'w') as fichier:
fichier.write("Voici une nouvelle ligne de texte.\n")
fichier.write("Et une autre ligne.")
Écriture de plusieurs lignes
Vous pouvez écrire une liste de lignes d’un coup :
lignes = ["Ligne 1", "Ligne 2", "Ligne 3"]
with open('fichier_lignes.txt', 'w') as fichier:
fichier.writelines(ligne + '\n' for ligne in lignes)
Parsing de fichiers
Fichiers CSV
Python offre un module csv
pour traiter facilement les fichiers CSV :
import csv
with open('donnees.csv', 'r') as fichier_csv:
lecteur = csv.reader(fichier_csv)
for ligne in lecteur:
print(ligne)
Fichiers JSON
Le module json
permet de parser des fichiers JSON :
import json
with open('donnees.json', 'r') as fichier_json:
donnees = json.load(fichier_json)
print(donnees)
Test et évaluation des manipulations de fichiers
Pour bien comprendre et tester ces concepts, créons quelques fonctions de test pour chaque type de manipulation.
Préparation des fichiers de test
D’abord, créons des fichiers de test :
# Création d'un fichier texte
with open('test_texte.txt', 'w') as f:
f.write("Ligne 1\nLigne 2\nLigne 3")
# Création d'un fichier CSV
import csv
with open('test_csv.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows([['Nom', 'Age'], ['Alice', 30], ['Bob', 25]])
# Création d'un fichier JSON
import json
with open('test_json.json', 'w') as f:
json.dump({'nom': 'Charlie', 'age': 35, 'ville': 'Paris'}, f)
Fonctions de test
Maintenant, créons des fonctions pour tester chaque type de manipulation :
def test_lecture_texte():
with open('test_texte.txt', 'r') as f:
contenu = f.read()
print("Contenu du fichier texte :", contenu)
def test_ecriture_texte():
with open('test_ecriture.txt', 'w') as f:
f.write("Test d'écriture\nSur plusieurs lignes")
print("Fichier 'test_ecriture.txt' créé.")
def test_lecture_csv():
with open('test_csv.csv', 'r') as f:
reader = csv.reader(f)
for ligne in reader:
print(ligne)
def test_ecriture_csv():
donnees = [['Produit', 'Prix'], ['Pomme', 1.20], ['Banane', 0.90]]
with open('test_ecriture.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(donnees)
print("Fichier 'test_ecriture.csv' créé.")
def test_lecture_json():
with open('test_json.json', 'r') as f:
donnees = json.load(f)
print("Contenu du fichier JSON :", donnees)
def test_ecriture_json():
donnees = {'nom': 'David', 'age': 40, 'ville': 'Lyon'}
with open('test_ecriture.json', 'w') as f:
json.dump(donnees, f)
print("Fichier 'test_ecriture.json' créé.")
Exécution des tests
Exécutons nos fonctions de test :
if __name__ == "__main__":
print("Test de lecture de fichier texte :")
test_lecture_texte()
print("\nTest d'écriture de fichier texte :")
test_ecriture_texte()
print("\nTest de lecture de fichier CSV :")
test_lecture_csv()
print("\nTest d'écriture de fichier CSV :")
test_ecriture_csv()
print("\nTest de lecture de fichier JSON :")
test_lecture_json()
print("\nTest d'écriture de fichier JSON :")
test_ecriture_json()
Interprétation des résultats
En exécutant ces tests, vous pourrez observer :
- Comment le contenu des fichiers est lu et affiché.
- Comment les nouveaux fichiers sont créés avec le contenu spécifié.
- Les différences de structure entre les fichiers texte, CSV et JSON.
- La facilité d’utilisation des modules
csv
etjson
pour manipuler ces types de fichiers spécifiques.
Ces tests vous permettent de voir concrètement comment les différentes méthodes de manipulation de fichiers fonctionnent en pratique.
Bonnes pratiques et considérations
- Gestion des erreurs : Utilisez toujours des blocs try/except pour gérer les erreurs potentielles lors de la manipulation de fichiers.
- Encodage : Spécifiez l’encodage lors de l’ouverture des fichiers pour éviter les problèmes de caractères spéciaux.
- Fermeture des fichiers : Utilisez toujours le gestionnaire de contexte
with
pour assurer la fermeture automatique des fichiers. - Performances : Pour les gros fichiers, préférez la lecture/écriture par morceaux plutôt que de charger tout en mémoire.
Lire Aussi :
Tri fusion vs Tri rapide en Python : Analyse comparative et implémentation
Comment implémenter une recherche binaire en Python : Un guide étape par étape