
Manipulation de fichiers et entrées/sorties
Apprenez à lire, écrire et manipuler des fichiers texte et binaires en Python. Découvrez comment interagir avec le système de fichiers, gérer les chemins, et utiliser les entrées/sorties standard pour communiquer avec l'utilisateur.
Interagir avec les fichiers : un besoin fondamental
La plupart des applications ont besoin d'interagir avec des fichiers, que ce soit pour lire des données de configuration, enregistrer des résultats, ou traiter des informations provenant de sources externes. La manipulation de fichiers est donc une compétence essentielle pour tout développeur Python.
Imaginez que vous développiez un programme d'analyse de données. Vous aurez probablement besoin de lire des données à partir de fichiers CSV ou Excel, de les traiter, puis d'enregistrer les résultats dans un nouveau fichier. Ou peut-être que vous créez un jeu qui doit sauvegarder la progression du joueur dans un fichier.
Dans ce chapitre, nous allons explorer les mécanismes de base pour lire et écrire des fichiers en Python. Vous apprendrez à ouvrir des fichiers en mode lecture, écriture ou ajout, à lire leur contenu ligne par ligne ou en entier, à écrire des données dans des fichiers, et à fermer correctement les fichiers pour libérer les ressources système.
Fichiers texte vs. fichiers binaires : quelle différence ?
Il est important de distinguer les fichiers texte des fichiers binaires. Les fichiers texte sont des fichiers qui contiennent du texte lisible par un humain, comme des fichiers de code source, des fichiers CSV, ou des fichiers de configuration. Les fichiers binaires, en revanche, contiennent des données qui ne sont pas directement lisibles par un humain, comme des images, des vidéos, ou des fichiers exécutables.
La principale différence entre les deux types de fichiers réside dans la façon dont les données sont encodées. Les fichiers texte utilisent un encodage de caractères, comme UTF-8 ou ASCII, pour représenter le texte. Les fichiers binaires utilisent une représentation binaire brute des données.
En Python, vous devez spécifier le mode d'ouverture d'un fichier en fonction de son type. Vous utiliserez le mode `'r'` (lecture), `'w'` (écriture) ou `'a'` (ajout) pour les fichiers texte, et vous ajouterez le suffixe `'b'` (pour binaire) pour les fichiers binaires (par exemple, `'rb'` pour lire un fichier binaire, `'wb'` pour écrire dans un fichier binaire).
Nous verrons comment lire et écrire des fichiers texte et binaires, et comment utiliser des modules comme `struct` et `pickle` pour sérialiser et désérialiser des données complexes (c'est-à-dire les convertir en une représentation binaire et vice-versa).
Naviguer dans le système de fichiers avec le module `os`
Le module `os` de la bibliothèque standard de Python fournit des fonctions pour interagir avec le système d'exploitation, notamment pour manipuler des fichiers et des répertoires. Vous apprendrez à lister les fichiers et les répertoires, à créer, renommer et supprimer des fichiers et des répertoires, à obtenir des informations sur les fichiers (taille, date de modification, etc.), et à parcourir récursivement une arborescence de répertoires.
Imaginez que vous ayez besoin de trouver tous les fichiers `.txt` dans un répertoire et ses sous-répertoires. Vous pourriez utiliser la fonction `os.walk` pour parcourir l'arborescence et effectuer une action sur chaque fichier `.txt` trouvé.
Nous aborderons également le module `os.path`, qui fournit des fonctions pour manipuler des chemins de fichiers de manière portable, c'est-à-dire indépendamment du système d'exploitation. Vous apprendrez à construire des chemins de fichiers, à vérifier l'existence d'un fichier ou d'un répertoire, à obtenir le nom de base d'un fichier, le répertoire parent, etc.
Une bonne maîtrise du module `os` et de `os.path` est essentielle pour écrire des programmes Python qui interagissent efficacement avec le système de fichiers.
Entrées/sorties standard : communiquer avec l'utilisateur
En plus de manipuler des fichiers, votre programme peut avoir besoin d'interagir directement avec l'utilisateur. C'est là qu'interviennent les entrées/sorties standard.
L'entrée standard (`stdin`) est le flux de données par lequel votre programme reçoit des données de l'utilisateur. Par défaut, `stdin` est connecté au clavier. La sortie standard (`stdout`) est le flux de données par lequel votre programme envoie des données à l'utilisateur. Par défaut, `stdout` est connecté à la console. L'erreur standard (`stderr`) est un autre flux de données utilisé pour afficher les messages d'erreur. Par défaut, `stderr` est également connecté à la console.
Vous apprendrez à utiliser la fonction `input()` pour lire des données entrées par l'utilisateur au clavier, et la fonction `print()` pour afficher des données à l'écran. Nous verrons également comment rediriger les entrées/sorties standard vers des fichiers, ce qui peut être utile pour automatiser des tâches ou pour tester votre programme.
Une bonne compréhension des entrées/sorties standard vous permettra de créer des programmes interactifs qui communiquent efficacement avec l'utilisateur.