- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :On arrive à la dernière partie de cet exercice dans lequel on va sauvegarder notre liste sur ledisque. Donc j'ai fait une méthode sauvegardée ici qui ne prend aucun paramètre, puisqu'on ne
00:00:11 :va pas spécifier quoi que ce soit. On va en fait utiliser le nom de la liste pour le concaténerdans le chemin pour savoir en fait différencier les différentes listes sur le disque. Mais on ne
00:00:21 :va rien passer directement à cette méthode. Donc la première chose que j'ai fait ici c'estd'importer deux modules. Le module JSON qui va nous permettre de sauvegarder le contenu de la
00:00:29 :liste dans un fichier JSON et le module OS qui va nous permettre de faire de la concaténation etdes opérations sur notre disque dur avec les chemins de dossier. J'ai également importé ma
00:00:40 :variable data dir ici qui était définie dans notre module constants. Une petite note par rapport à ça,par rapport en fait au PEP8 qui nous conseille dans les imports de séparer les imports endifférentes catégories. Vous voyez ici que j'ai un espace entre les deux et je commence par les
00:00:55 :imports qui concernent les modules de la librairie standard de Python. Donc tout ça c'est des modulesen fait qui sont disponibles avec Python de base et je les sépare bien de cette ligne ici qui esten fait une ligne qui correspond à mon module à moi donc le module constants.py ici. Et donc c'est
00:01:11 :bien important d'avoir cette distinction puisque quand vous allez travailler avecd'autres personnes en fait et bien ils vont être habitués généralement à avoir cette distinction.
00:01:19 :Donc si vous mettez à l'intérieur ici de ce premier bloc des modules qui vous appartiennent, les gensvont penser que c'est des modules de la librairie standard et ça ne va pas être très clair en faitque c'est un module à vous. Alors que si vous les séparez comme ceci et bien ça va être un peu plus
00:01:32 :clair. Généralement en fait les imports on les fait en trois catégories et on peut avoir jusqu'àtrois catégories. Là dans ce cas-ci il n'y en a que deux mais on peut avoir une troisième catégorie
00:01:40 :qui va venir s'insérer entre les deux qui seraient des modules qui ne sont pas dans la librairiestandard de Python mais qui ne sont pas non plus des modules que vous avez créés. Donc par exemple
00:01:48 :imaginez que vous allez utiliser le module request qui permet de faire des requêtes web et bien cemodule il n'est pas disponible dans la librairie standard de Python mais ce n'est pas non plus unmodule que vous avez vous même créé. Donc ce module on le mettrait ici si on avait à l'inclure. Donc
00:02:03 :là encore en séparant avec une ligne vide à chaque fois. Donc comme ça ce serait très visible toutde suite pour quelqu'un qui utilise votre script que ces trois modules ici sont disponibles debase avec Python, que celui-ci c'est un module qu'il faut installer mais qui n'a pas été créé par
00:02:16 :quelqu'un de votre équipe par exemple et que ce module ici et bien c'est vraiment quelque chosequi appartient à votre projet. Donc je vais enlever cette ligne puisque on n'en aura pas besoin. Voilà
00:02:24 :pour la petite explication sur les imports qui je pense est quand même assez importante à garderen tête. On revient sur sauvegarder ici donc notre méthode dans laquelle on va déjà créer la
00:02:34 :variable en fait qui va contenir le chemin vers le fichier json. Donc pour ça on utilise os.path.joinpour joindre différents morceaux de chemin ensemble. On joint notre constante datadir donc
00:02:47 :qui va correspondre à l'intérieur de mon dossier ici donc le dossier 0 5 dans lequel se trouve monfichier lib.py et mon fichier constants.py et bien on va avoir un sous dossier en fait data et on va
00:02:58 :joindre donc ce dossier data avec le nom de ma liste. Donc là on fait une concaténation avecun fstring pour intégrer le nom de ma liste et l'extension .json. Donc avant d'écrire à l'intérieur
00:03:10 :de notre liste on va déjà faire une vérification pour s'assurer que le dossier existe puisque onpeut pas créer un fichier dans un dossier qui n'existe pas. Donc ce que je vais faire c'est une
00:03:19 :structure conditionnelle et je vais dire que si le dossier datadir n'existe pas, donc là j'utilisenot, donc if not os.path.existDatadir, donc ça ça nous permet de vérifier si un fichier ou un
00:03:30 :dossier existe. Donc s'il n'existe pas et bien je vais le créer donc os.makeDirs qui me permetde créer un dossier. Donc une fois que ça c'est fait, une fois qu'on est assuré que le dossier
00:03:41 :existe, là dans ce cas-ci vous voyez que le dossier n'existe pas donc si on lançait notre scripttout de suite et bien cette condition serait vérifiée puisqu'il n'existe pas et on créeraitle dossier automatiquement. Les fois d'après, puisque le dossier existerait puisque on l'aurait
00:03:54 :fait une première fois, on aurait sauvegardé une première fois notre liste et bien on ne passeraittout simplement pas à l'intérieur de cette structure conditionnelle et on n'essayerait pas de créer undossier qui existe déjà. Donc c'est vraiment juste une petite vérification qui va normalement
00:04:06 :s'effectuer juste la première fois, qui va en fait créer le dossier juste la première fois etensuite on n'aura pas besoin de le recréer. Ensuite on va ouvrir notre fichier donc on va là
00:04:15 :encore utiliser withOpen. Donc withOpen, on lui passe la variable chemin qui correspond au chemincomplet vers notre fichier JSON et on lui dit qu'on veut l'ouvrir en mode écriture donc w. On
00:04:26 :récupère ça dans une variable f et on utilise ensuite notre module JSON pour écrire tout lecontenu en fait de notre liste à l'intérieur de ce fichier. Donc json.dump, qu'est-ce qu'on lui
00:04:37 :passe ? Eh bien self puisque self correspond à ma liste qui va contenir tous les éléments de maliste. On écrit à l'intérieur du fichier donc à l'intérieur de f et moi je rajoute toujours indent
00:04:46 :égal 4 ici pour qu'on ait une bonne indentation et que ce soit un peu plus lisible. Et à la finici je retourne true tout simplement même si on n'a pas de return false ici. J'ai pas en fait fait
00:04:57 :de cas de figure où il pourrait y avoir une erreur donc là c'est assez basique comme façon de faire.Généralement on ferait plutôt des try except donc des blocs try except quand on fait de la gestionavec des fichiers comme ceci pour s'assurer que l'écriture a bien réussi. Là je reste assez simple
00:05:11 :mais si jamais vous voulez pousser ce script un peu plus loin eh bien c'est quelque chose quevous pourriez faire de faire toute la gestion des erreurs au niveau de l'écriture ou de lalecture des fichiers pour vous assurer que eh bien il n'y a pas de problème. Et si jamais il y a un
00:05:22 :problème eh ben dans ce cas-ci vous pourriez retourner false et même loguer une erreur pourindiquer à l'utilisateur qu'il y a eu une erreur lors de l'écriture de la liste sur le disque. Donc
00:05:32 :moi dans ce cas-ci je fais juste retourner true pour qu'on ait un feedback et que l'on voit enfait quand on sauvegarde la liste que la liste a bien été sauvegardée. Donc dans ce cas-ci je
00:05:40 :vais ajouter des éléments dans ma liste donc là encore on va y aller avec les pommes et lespoires et je vais faire à la fin list.sauvegarder on va vérifier que tout ça fonctionne correctement.
00:05:49 :Donc je sauvegarde, je lance mon script, on n'a pas d'erreur et si on regarde ici on a bien undossier data qui a été créé avec à l'intérieur ma liste course.json et si je vais voir ici j'ai
00:06:00 :bien les pommes et les poires avec une indentation de quatre espaces ici comme indiqué. Donc toutfonctionne très bien et ça marque donc la fin de cet exercice. Alors on est allé, on est resté
00:06:09 :assez simple, j'ai pas refait l'entièreté de l'exercice de la liste de course mais je voulaisvraiment vous montrer en fait comment on pouvait passer d'une logique procédurale, donc d'unelogique en fait avec des fonctions, avec tout le code qui était presque contenu à l'intérieur d'unseul fichier, à une logique de programmation orientée objet. Donc là on crée vraiment des
00:06:26 :objets, dans ce cas-ci un objet liste, avec des méthodes, des attributs, donc l'attribut nom dansce cas-ci, des méthodes pour ajouter, pour afficher, sauvegarder, enlever des éléments etc. Et donc
00:06:37 :c'est vraiment un autre paradigme qui va vous permettre d'organiser les choses différemment.Ça ne vous permettra pas de faire plus de choses vraiment. En fait tout ce qu'on fait avec des
00:06:46 :classes on peut le faire avec des fonctions, c'est vraiment juste un autre paradigme quigénéralement est quand même un peu plus puissant, qui nous permet comme vous le voyez ici parexemple d'utiliser l'héritage. Donc l'héritage ne vous en faites pas, on est passé assez rapidement
00:06:57 :dessus, je vous ai juste montré qu'on pouvait hériter d'une liste dans ce cas-ci, mais on yreviendra dans une prochaine partie. Dans la deuxième partie sur la programmation orientée
00:07:03 :objet, je vous parlerai beaucoup plus en détail de l'héritage et de ce qu'on peut faire avec, et dece à quoi ça peut servir. Mais dans ce cas-ci vous voyez que de passer par une classe ça permet de
00:07:12 :mieux organiser les choses, et de faire donc quelque chose qui est aussi un peu plus professionnel,puisque dans le monde professionnel en fait c'est quand même assez rare qu'on fonctionne uniquementavec des fonctions, peut-être pour des scripts assez simples, mais généralement on utilise laforce de la programmation orientée objet pour faire toute la logique de notre programme. Donc
00:07:30 :voilà pour cet exercice sur la liste de courses, donc liste de courses ou liste de tâches, puisquelà on a un peu amélioré pour qu'on puisse faire des listes de toutes sortes, et donc j'espère queça vous permet d'y voir un peu plus clair sur toute cette première partie de la programmation orientée objet.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.