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
FileNotFoundError
, PermissionError
, etc.) pour un code plus robuste.csv
pour lire et écrire des fichiers CSV. Spécifier le délimiteur si nécessaire.encoding
(par exemple, encoding="utf-8"
).bytes
.
FAQ
-
Comment déterminer l'encodage d'un fichier texte inconnu ?
Vous pouvez utiliser la bibliothèquechardet
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
etcsv.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 modulecsv
offre des options pour gérer les guillemets. Par exemple, vous pouvez utiliser le paramètrequoting=csv.QUOTE_MINIMAL
pour ne citer que les champs contenant des caractères spéciaux (comme le délimiteur) ouquoting=csv.QUOTE_ALL
pour citer tous les champs.