Manipulation de fichiers avec Python : lecture, écriture et parsing

manipulation de fichiers Python, lecture fichiers Python, écriture fichiers Python, parsing fichiers Python, gestion fichiers Python, open() Python, with statement Python, fichiers CSV Python, fichiers JSON Python, traitement données Python, py fichiers,

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 :

  1. Comment le contenu des fichiers est lu et affiché.
  2. Comment les nouveaux fichiers sont créés avec le contenu spécifié.
  3. Les différences de structure entre les fichiers texte, CSV et JSON.
  4. La facilité d’utilisation des modules csv et json 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

  1. Gestion des erreurs : Utilisez toujours des blocs try/except pour gérer les erreurs potentielles lors de la manipulation de fichiers.
  2. Encodage : Spécifiez l’encodage lors de l’ouverture des fichiers pour éviter les problèmes de caractères spéciaux.
  3. Fermeture des fichiers : Utilisez toujours le gestionnaire de contexte with pour assurer la fermeture automatique des fichiers.
  4. 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