Numérique et Sciences Informatiques > Langages de Programmation > Introduction à un Langage Spécifique (Python par exemple) > Gestion des entrées/sorties

Gestion Avancée des Entrées/Sorties en Python

Approfondissez vos connaissances sur la gestion des entrées/sorties en Python. Ce guide aborde la gestion des erreurs, la manipulation de fichiers binaires et l'utilisation du format CSV, offrant ainsi une perspective plus complète et des outils supplémentaires pour vos projets.

Gestion des Erreurs Spécifiques

Il est important de gérer les erreurs spécifiques pour un code plus robuste. Au lieu de simplement capturer toutes les exceptions avec except Exception as e:, essayez de cibler les erreurs potentielles que vous anticipez. Exemple: try: with open("mon_fichier.txt", "r") as fichier: contenu = fichier.read() # ... except FileNotFoundError: print("Le fichier n'a pas été trouvé.") except PermissionError: print("Vous n'avez pas la permission de lire ce fichier.") except Exception as e: print(f"Une erreur inattendue s'est produite : {e}") Cela permet de fournir des messages d'erreur plus précis et d'adapter le comportement du programme en fonction de l'erreur.

Lecture et Écriture de Fichiers Binaires

En plus des fichiers texte, Python permet de manipuler des fichiers binaires (images, sons, vidéos, etc.). Pour cela, il faut ouvrir le fichier en mode 'rb' (lecture binaire) ou 'wb' (écriture binaire). Exemple de lecture d'un fichier image: try: with open("image.jpg", "rb") as fichier: data = fichier.read() # Traiter les données binaires (par exemple, les afficher avec une bibliothèque appropriée) except FileNotFoundError: print("Le fichier image n'a pas été trouvé.") except Exception as e: print(f"Une erreur s'est produite lors de la lecture du fichier : {e}") Exemple d'écriture de données binaires dans un fichier: donnees_binaires = b'\x00\x01\x02\x03' try: with open("fichier.bin", "wb") as fichier: fichier.write(donnees_binaires) except Exception as e: print(f"Une erreur s'est produite lors de l'écriture du fichier : {e}") Important: Les données binaires sont représentées par des objets de type bytes en Python. Vous pouvez les créer en préfixant une chaîne de caractères avec 'b' (comme dans l'exemple) ou en utilisant la fonction bytes().

Manipulation de Fichiers CSV

Le format CSV (Comma Separated Values) est un format de fichier texte très répandu pour stocker des données tabulaires (tableaux). Python propose le module csv pour faciliter la lecture et l'écriture de fichiers CSV. Exemple de lecture d'un fichier CSV: import csv try: with open("donnees.csv", "r", newline='') as fichier_csv: lecteur_csv = csv.reader(fichier_csv, delimiter=';') # Définir le délimiteur for ligne in lecteur_csv: print(ligne) except FileNotFoundError: print("Le fichier CSV n'a pas été trouvé.") except Exception as e: print(f"Une erreur s'est produite lors de la lecture du fichier : {e}") Dans cet exemple, csv.reader() crée un objet lecteur CSV qui itère sur les lignes du fichier. Le paramètre delimiter permet de spécifier le caractère utilisé pour séparer les valeurs (ici, le point-virgule). Exemple d'écriture dans un fichier CSV: import csv donnees = [["Nom", "Âge", "Ville"], ["Alice", "30", "Paris"], ["Bob", "25", "Lyon"]] try: with open("nouvelles_donnees.csv", "w", newline='') as fichier_csv: ecrivain_csv = csv.writer(fichier_csv, delimiter=';') ecrivain_csv.writerows(donnees) except Exception as e: print(f"Une erreur s'est produite lors de l'écriture du fichier : {e}") Ici, csv.writer() crée un objet écrivain CSV qui permet d'écrire des lignes dans le fichier. La méthode writerows() écrit plusieurs lignes à partir d'une liste de listes.

Encodage des Caractères

Lorsque vous travaillez avec des fichiers texte, il est crucial de connaître l'encodage des caractères utilisé (par exemple, UTF-8, ISO-8859-1). Si l'encodage n'est pas spécifié correctement, vous risquez de rencontrer des erreurs de décodage ou d'afficher des caractères incorrects. Vous pouvez spécifier l'encodage lors de l'ouverture du fichier avec le paramètre encoding : try: with open("mon_fichier.txt", "r", encoding="utf-8") as fichier: contenu = fichier.read() print(contenu) except FileNotFoundError: print("Le fichier n'a pas été trouvé.") except UnicodeDecodeError: print("Erreur d'encodage : le fichier n'est pas encodé en UTF-8.") Le choix de l'encodage dépend du fichier que vous manipulez. UTF-8 est un encodage très courant qui permet de représenter la plupart des caractères utilisés dans le monde.

Ce qu'il faut retenir

  • Gérer les erreurs spécifiques (FileNotFoundError, PermissionError, etc.) pour un code plus robuste.
  • Ouvrir les fichiers binaires en mode 'rb' (lecture) ou 'wb' (écriture).
  • Utiliser le module csv pour lire et écrire des fichiers CSV. Spécifier le délimiteur si nécessaire.
  • Spécifier l'encodage des caractères lors de l'ouverture des fichiers texte avec le paramètre encoding (par exemple, encoding="utf-8").
  • Les données binaires sont représentées par des objets de type bytes.

FAQ

  • Comment déterminer l'encodage d'un fichier texte inconnu ?

    Vous pouvez utiliser la bibliothèque chardet pour essayer de détecter automatiquement l'encodage d'un fichier. Cependant, la détection automatique n'est pas toujours fiable à 100%.
  • Quelle est la différence entre csv.reader et csv.DictReader ?

    csv.reader renvoie chaque ligne sous forme de liste de valeurs. csv.DictReader renvoie chaque ligne sous forme de dictionnaire, où les clés sont les noms des colonnes (généralement la première ligne du fichier CSV).
  • Comment gérer les fichiers CSV avec des guillemets autour des champs ?

    Le module csv offre des options pour gérer les guillemets. Par exemple, vous pouvez utiliser le paramètre quoting=csv.QUOTE_MINIMAL pour ne citer que les champs contenant des caractères spéciaux (comme le délimiteur) ou quoting=csv.QUOTE_ALL pour citer tous les champs.