
Cette leçon vidéo en français explique comment manipuler les fichiers avec le langage Python. Elle commence par souligner la nécessité de persister les résultats d’un programme au-delà de la mémoire vive, puis décrit les deux grandes catégories de fichiers (texte et binaire) et leurs usages. Le présentateur introduit les notions de chemin relatif et absolu, puis détaille la fonction open() et les différents modes d’ouverture (r, w, a, r+, w+, a+), en insistant sur le comportement du curseur et les effets de chaque mode. Il présente le descripteur de fichier (objet retourné par open) et les opérations de base : read, readline, readlines, write, ainsi que la gestion du curseur avec seek. La nécessité de fermer les fichiers est abordée, d’abord via la méthode close() puis de façon plus sûre avec la construction with‑as qui assure la fermeture automatique. Le cours montre comment lire le fichier ligne par ligne, explique le rôle du caractère de saut de ligne (\n) et la différence entre itération directe et méthodes dédiées. Enfin, un exemple complet crée un compteur persistant qui incrémente à chaque exécution du script : il lit la valeur stockée, la convertit en entier, l’incrémente, repositionne le curseur, réécrit la nouvelle valeur et ferme le fichier. Le présentateur souligne les erreurs fréquentes (oublier de fermer, confondre types chaîne/int, mauvaise position du curseur) et conclut en rappelant que les méthodes présentées couvrent la plupart des besoins courants en manipulation de fichiers.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon sur le langage de programmation Python. Aujourd'hui, nous allons voir les fichiers. Tous les programmes que nous avons écrits jusqu'ici produisent des résultats. Ces résultats-là sont souvent affichés à l'écran qui représente la sortie par défaut d'un programme. Cependant, il ne subsiste aucune trace de ces résultats-là, c'est-à-dire, à chaque fois que le programme est exécuté, il il recommence à zéro comme s'il n'a jamais été exécuté auparavant. En effet, les résultats sont stockés dans la mémoire vive de l'ordinateur et non pas dans la mémoire de masse, ce qui veut dire qu'ils ne peuvent subsister que pendant quelques instants, notamment durant le temps que le programme tourne, autrement ils sont automatiquement supprimés. Dans la pratique, nous avons souvent besoin de garder une trace d'exécution d'un programme. Par exemple, si on programme un générateur de code aléatoire, il faut bien que ces codes-là soient stockés quelque part pour une éventuelle réutilisation dans le futur. Pour stocker les résultats d'un programme, on fait souvent appel aux fichiers. Il convient de noter qu'il existe d'autres moyens qui permettent de stocker les résultats, notamment les bases de données qui sont largement utilisées dans des programmes avancés, comme des applications web ou des applications mobiles. Un fichier est tout simplement un document, très souvent au format texte. À titre d'exemple, Les programmes Python qu'on écrit sont des textes placés dans un fichier qui sera exécuté par l'interpréteur. Toujours à titre d'information, il existe aussi les fichiers binaires. Ce sont des fichiers qui ne contiennent pas du simple texte mais des données codées différemment pour un usage spécial, comme les images ou les vidéos. En Python, il existe un ensemble de fonctions et méthodes qui permettent de manipuler les fichiers texte, donc on peut lire leur contenu et on peut aussi le modifier. Pour commencer, on va créer un fichier nommé fichier.txt et on va le placer dans le même répertoire que le fichier Python que nous exécutons. Bien entendu, il s'agit du fichier que l'on va manipuler avec notre programme. La première instruction consiste à ouvrir le fichier. Le fait d'ouvrir un fichier signifie qu'on va le charger dans la mémoire vive de l'ordinateur afin qu'on puisse le manipuler. Nous allons écrire l'instruction suivante: La fonction open permet d'ouvrir le fichier. Elle accueille normalement 2 arguments et qui sont: le chemin du fichier et le mode d'ouverture. Le chemin est une chaîne de caractères qui désigne l'emplacement où se trouve le fichier. On peut distinguer 2 types de chemins: relatifs et absolus. Un chemin relatif prend en considération l'emplacement du programme qui manipule le fichier. En effet, nous avons placé le fichier texte et le programme Python dans le même répertoire. Donc pour atteindre le fichier texte depuis le programme Python, on va simplement désigner son nom fichier.txt. Si par exemple le fichier texte est placé dans un répertoire nommé Documents situé dans le même répertoire que le programme Python, alors le chemin devient Documents/fichier.txt. Donc vous avez compris que pour désigner un chemin relatif, on commence toujours à partir de l'emplacement où se trouve le programme Python. Un chemin absolu ne prend pas en considération l'emplacement du programme appelant, C'est-à-dire, quel que soit l'emplacement du programme Python, le chemin absolu reste le même. Par exemple, C:\fichier.txt est un chemin absolu qui commence à la racine C: et qui sous-entend que le fichier texte est placé directement dans le lecteur C:. Je vais opter pour le chemin relatif puisqu'il est plus facile à exprimer dans ce cas. Le mode d'ouverture est aussi une chaîne de caractères qui spécifie les droits qu'on aura sur le fichier quand on l'aura ouvert, c'est-à-dire qu'on spécifie en gros le type d'opérations qu'on a le droit de mener dessus. Comme l'ajout ou la modification. Les droits sont exprimés par des caractères comme ceux-ci: r désigne qu'on ouvre le fichier en mode lecture seule, c'est-à-dire qu'on aura le droit de lire son contenu mais on ne pourra pas le modifier. w signifie qu'on ouvre le fichier en création et écriture seule, ça veut dire que si le fichier n'existe pas alors il sera créé, et s'il existe déjà alors il sera vidé, c'est-à-dire que son contenu sera supprimé. On pourra donc ajouter du contenu, modifier ce dernier, mais on ne peut pas le lire. Si on veut ouvrir le fichier en mode lecture et écriture alors on met R+. Dans ce cas, le fichier peut être lu et modifié par le programme. Pareil, si on veut que le fichier soit ouvert en mode création, lecture et écriture alors on met W+. Notez que tous ces modes placent le curseur au début du fichier, c'est-à-dire si on lit ou on ajoute du contenu alors ça sera fait à partir du début du fichier. Donc si jamais on écrit la chaîne Bonjour, alors on écrase les 7 premiers caractères qui existaient déjà dans le fichier pour les remplacer par ceux de notre chaîne. Le mode a permet d'ajouter un contenu à la fin du fichier, c'est-à-dire qu'il place automatiquement le curseur à la fin. Ce mode ne permet pas la lecture, donc on ajoute+ pour que la lecture soit possible aussi. Notez que si le fichier n'existe pas, alors il sera créé comme pour le mode w et w+. Il existe d'autres modes d'ouverture mais ceux évoqués sont suffisants pour le moment. La fonction Open retourne un identifiant d'ouverture du fichier, connu aussi sous le nom de descripteur du fichier. On va le noter f. Désormais, toutes les opérations qui seront menées seront faites à travers des méthodes du descripteur f. Nous allons mettre une phrase constituée de plusieurs lignes dans notre fichier texte. Notez qu'on ajoute des sauts de ligne nous-mêmes. Pour le mode d'ouverture, nous allons utiliser R+, c'est-à-dire lecture et écriture. D'ailleurs, c'est le mode d'ouverture le plus souvent utilisé dans la pratique, aux côtés du mode R qui désigne lecture seule. Si on souhaite récupérer le texte entier présent dans le fichier, alors on fait appel à la méthode Read applicable au descripteur f. La méthode Read retourne le contenu du fichier sous forme d'une chaîne de caractères. Notez que le descripteur f est un itérable, c'est-à-dire qu'on peut le parcourir à l'aide d'une boucle et qu'il y a accès à chaque ligne du fichier. Cependant, cette technique est rarement utilisée. Il est capital de fermer le fichier à la fin du traitement prévu à l'aide de la méthode close. La méthode close permet de libérer la mémoire pour de meilleures performances. Autrement dit, si jamais on ouvre beaucoup de fichiers dans un programme et qu'on ne les ferme pas, Alors, l'ordinateur finirait probablement par rejeter les ouvertures d'autres fichiers afin d'optimiser la mémoire, ce qui soulèverait une erreur par l'interpréteur. En réalité, le fait d'oublier la fermeture d'un fichier ouvert est très courant comme erreur, et pour ne pas y tomber, on préfère ouvrir le fichier à l'aide de l'instruction With, appelée aussi déclaration With. Donc, on met le mot-clé With suivi de la fonction d'ouverture, puis le mot-clé As et enfin le descripteur du fichier. N'oublie pas les deux-points, car cette déclaration est semblable à une structure, donc elle renferme un bloc qui n'est rien d'autre que le traitement que l'on souhaite mener sur le fichier, indenté bien entendu. La déclaration With se charge de fermer automatiquement le fichier à la sortie du bloc, donc pas la peine d'expliciter l'appel de la méthode Close. Modifions notre programme de telle sorte à écrire dans le fichier texte. Donc nous allons faire ceci: La méthode write permet d'écrire la chaîne qui lui est passée en argument dans le fichier. Exécutons et analysons le résultat. En jetant un coup d'œil sur le fichier texte, on constate que son contenu a été modifié. En effet, les 4 astérisques que nous avons écrits ont été ajoutés au début du fichier et c'est normal, car le curseur est placé au début en raison de l'utilisation du mode d'ouverture r+. Donc, les 4 premiers caractères qui existaient déjà dans le fichier ont été remplacés par nos astérisques. Jusque-là, rien de spécial. Ensuite, la méthode read va retourner le texte présent dans le fichier texte, mais comme vous le voyez au moment de l'exécution, le texte affiché ne contient pas les 4 astérisques. En effet, c'est toujours dû à l'emplacement du curseur. Il faut noter que toute opération menée sur un fichier, que ce soit une lecture ou une écriture, place automatiquement le curseur, donc la prochaine opération sera menée à partir de cette position-là. Ajoutons une autre instruction Read. On constate que rien n'est affiché suite à cette deuxième lecture, car le curseur a été déplacé à la fin du fichier suite à la lecture précédente. Néanmoins, il est possible de contrôler la position du curseur à l'aide de la méthode Seek. Par exemple, si on veut que la deuxième lecture retourne tout le contenu du fichier, Alors on déplace le curseur au début de celui-ci, donc à la position 0. Figurez-vous qu'à ce niveau, c'est comme si on a affaire à une chaîne de caractères classique. Il est possible d'avoir le même résultat sans utiliser la méthode seek. Pour cela, on va rouvrir le fichier avec un mode qui permet la lecture et qui place le curseur au début comme r ou r+. Le mode r devrait suffire car on veut simplement lire le fichier. Évitez le mot w ou w+ car ils videront le fichier. En regardant le code, on se dirait que l'utilisation de la méthode seek est peut-être mieux car on aura affaire à un seul bloc indenté au lieu de 2 blocs indépendants. Il est également possible de récupérer le contenu du fichier ligne par ligne. Figurez-vous qu'une ligne finit toujours par un saut de ligne qui correspond généralement au mot-clé \n. Donc si votre fichier contient un seul paragraphe qui est affiché sur plusieurs lignes, ça ne veut pas dire que le texte contient vraiment plusieurs lignes, mais une seule, c'est juste que votre logiciel affiche le paragraphe sur plusieurs lignes pour une meilleure lisibilité. Donc, les méthodes que l'on va voir considèrent les sauts de ligne explicites. La méthode ReadLine lit la ligne courante du fichier, donc retourne une chaîne de caractères également. N'oubliez pas que cela engendre le déplacement du curseur, Donc si on réexécute ReadLine, on aura la ligne suivante. La méthode ReadLines avec un s retourne une liste qui contient toutes les lignes du fichier. Puisque notre fichier en contient 3, alors notre liste contiendra 3 éléments. Remarquez la présence du caractère antislash n qui signifie saut de ligne. Pour afficher la troisième ligne, on va juste appliquer l'indice 2 comme ceci. Maintenant, nous allons faire un exemple qui consiste à créer un compteur qui indique combien de fois le programme a été exécuté. Pour pérenniser la valeur du compteur, on va la stocker dans notre fichier texte. On commence par placer la valeur 0 dans le fichier texte pour dire que le programme n'a jamais été exécuté auparavant. On ouvre le fichier en mode lecture-écriture comme ceci. Ensuite, on On récupère le contenu du fichier qui correspond initialement à la chaîne 0. Figurez-vous bien qu'il s'agit d'une chaîne et non pas d'un entier, car la fonction Read retourne une chaîne de caractères. On va incrémenter cette valeur de 1 pour qu'au moment de l'exécution on indiquera que le programme a été exécuté une fois. Sauf qu'on obtient une erreur, car la variable Cpt est une chaîne, donc on va la transyper en entier. On peut désormais afficher à l'écran le nombre de fois que le programme a été exécuté en invoquant la variable Cpt comme ceci: Il faut maintenant enregistrer la nouvelle valeur de CPT dans le fichier avec la méthode Write comme ceci. Sauf que ça génère encore une erreur, car Write accepte une chaîne en guise d'argument et non pas un entier. Nous allons donc retransstyper la variable CPT en chaîne de caractères. Si on jette un coup d'œil au fichier texte, on se rendra compte que la valeur 1 a été placée après 0, et c'est normal car n'oubliez pas que le curseur a été déplacé suite à la lecture à l'aide de la méthode read. Donc on va remettre le curseur au début du fichier à l'aide de la méthode seek avant de procéder à l'écriture, ce qui écrasera la valeur 0 et la remplacera par 1, puis 2, etc. Maintenant, même si vous fermez votre programme et éteignez votre ordinateur, la prochaine fois que vous l'invoquerez, il se souviendra du nombre de fois qu'il a été exécuté auparavant car la valeur du compteur est enregistrée dans un fichier. Notez qu'il existe encore des méthodes qui permettent de manipuler les fichiers, mais celles que nous avons vues sont largement suffisantes pour mener les opérations les plus courantes. Merci pour votre attention et à la vidéo prochaine.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









