- 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 :Voici donc le script de départ que l'on avait avec notre liste qui est uniquement en mémoirelorsque l'on lance notre script. Donc on a bien le menu avec les différents choix possibles. Ici 1,
00:00:10 :2, 3, 4 et 5 qui vont nous permettre d'ajouter, de retirer, d'afficher, de vider la liste ou dequitter le programme. Pour l'instant avec ce programme ici la liste est uniquement dans
00:00:19 :la mémoire du script tant qu'il roule mais il n'y a aucun moyen de le sauvegarder. Donc danscette partie je vais vous montrer ma solution pour lire et sauvegarder la liste sur le disque. Donc
00:00:28 :la première chose que je fais c'est d'importer quelques modules qui vont m'aider pour faire cesopérations. Le premier module c'est le module OS qui me permet de réaliser différentes opérations
00:00:36 :sur mon disque dur. Par exemple de joindre des chemins ensemble, de récupérer des noms dedossier ou de créer même des dossiers sur le disque. On va ensuite avoir le module SIS qui
00:00:47 :me permet de quitter le programme. Donc ça c'était dans la première partie de ce projet qu'on l'avu. Et il y a également le module JSON qui va me permettre de lire et de sauvegarder des données
00:00:57 :au format JSON sur le disque. La première chose que je fais ici c'est récupérer le dossier actuel.Donc la liste ici elle est dans le dossier dans lequel se trouve le fichier Python, donc lefichier main.py. Ici on veut sauvegarder cette liste au même endroit. Pour ça je vais utiliser
00:01:11 :une variable un peu spéciale qui est cette variable file qui est suivie et précédée de 2-du bas. Doncça c'est une variable qui va avoir automatiquement le chemin complet vers notre script. Donc c'est
00:01:23 :pas nous qui définissons cette variable, c'est Python qui définit la valeur de cette variable aumoment où on lance notre script. Donc dans ce cas ci ça va être le chemin complet vers ce script
00:01:31 :main.py. Moi ce que je veux c'est pas le chemin complet du script main.py mais le chemin de laliste.json. Donc ce que je vais faire c'est déjà récupérer le chemin du dossier parent de mon
00:01:43 :fichier Python. Pour ça j'utilise os.path.dirname. Donc ça ça va me permettre de récupérer ledossier parent. Par exemple si j'ai un nom de dossier comme celui-ci, donc user tbash document
00:01:55 :list.json, si j'utilise os.path.dirname sur cette chaîne de caractères, eh bien ça va me retourneruniquement la première partie ici qui correspond donc au dossier parent, donc le nom du dossier.
00:02:06 :C'est ce que veut dire ça ici, dirname, c'est directory name. Donc ça nous retourne le nomdu dossier de notre chemin. Donc là dans ce cas ci on n'a pas list.json, on va avoir par exemple
00:02:15 :main.py qui est le chemin complet vers mon fichier ici. Si je mets mon curseur ici vous voyez lechemin complet vers ce fichier Python. Donc là dans ce cas ci je vais récupérer le chemin complet
00:02:25 :du dossier parent grâce à cette ligne de code. Donc là je récupère ça dans une variable quej'appelle curdir, donc c'est current directory, un raccourci pour current directory qui veut direle dossier courant. J'ai pour habitude personnellement de nommer cette variable
00:02:37 :globale comme ceci mais on pourrait la nommer n'importe comment, ça marcherait de la mêmefaçon. Et ensuite je vais concaténer cette variable, donc le dossier parent, avec la
00:02:46 :chaîne de caractère list.json. Pour ce faire j'utilise la fonction join du module os.pat.Donc os.pat.join ça va me permettre de joindre le dossier parent avec la chaîne de caractère
00:02:57 :list.json. Donc tout ça ici ça va me retourner le chemin vers ce fichier, donc list.json. Et jevais garder ce chemin dans une variable que j'ai appelée list.pat. Donc là pour l'instant c'est
00:03:09 :juste une chaîne de caractère, on s'entend que ce n'est pas un dossier, ce n'est pas un fichier ouquoi que ce soit, c'est vraiment juste une chaîne de caractère qui correspond au chemin de ma listesur le disque. Et c'est uniquement par la suite que l'on va utiliser cette chaîne de caractère
00:03:21 :pour indiquer à Python où se trouve notre fichier JSON et pour pouvoir ensuite le lire et écrire àl'intérieur de ce fichier. Donc là on continue avec tout ce qu'on avait vu dans la première partie de
00:03:31 :ce projet sur la liste de course. Et ici on a rajouté ces lignes de code qui nous permettentde vérifier l'existence de la liste sur le disque et si c'est le cas et bien de récupérer soncontenu. Donc je vérifie déjà l'existence de la liste, donc pour ça je fais os.pat.exist.
00:03:46 :Donc cette fonction elle me permet de vérifier qu'un fichier existe ou non. Donc on va vérifiersi list.pat existe, donc si ce fichier list.json existe sur le disque. Si c'est le cas et bien on
00:03:57 :va pouvoir lire son contenu, donc je vais faire withOpenList.pat en mode lecture, donc lectureavec R qui veut dire read. Donc je vais ouvrir ce fichier en tant que f, donc dans cette variable f
00:04:09 :je vais avoir mon fichier et je vais ensuite utiliser le module JSON pour lire le contenu dece fichier. Donc json.load ça nous permet de lire le contenu d'un fichier au format JSON et ce fichier
00:04:21 :et bien c'est la variable f que l'on a ouvert précédemment ici sur cette ligne. Je récupère lecontenu de json.load dans la variable list, donc la variable global list que l'on va modifier dans
00:04:31 :la suite du programme. Si par contre le chemin n'existe pas, donc si ce fichier list.jsonn'existe pas sur le disque, on ne peut donc pas lire son contenu et on va donc aller dans le elseet tout simplement initialiser une list vide. Donc list égale crochet ici comme on avait dans la
00:04:46 :première partie pour initialiser une list vide. C'est bien important ici qu'on ait le même nompour la variable, donc list ici dans les deux cas, puisque que la list existe ou non sur le disque,on veut modifier la même list par la suite. Donc là c'est cette variable list qui va être modifiée
00:05:01 :dans toute la suite du script. Une fois qu'on a récupéré le contenu de la list si elle existe surle disque ou créé une list vide si elle n'existe pas, on continue avec la logique de notre programmeet ce qui va nous intéresser maintenant c'est l'écriture de la list sur le disque. Donc pour
00:05:15 :ça on va aller ici dans le choix numéro 5 et avant d'afficher à bientôt et de sortir avec6.exit, on va écrire la list sur le disque, donc avec ces deux lignes de code ici. Ce qu'on va
00:05:26 :faire c'est qu'on va ouvrir la liste, donc on va l'ouvrir en mode écriture avec cette fois-ci lachaîne de caractère w qui signifie write, qui veut dire écrire en anglais. Donc withOpenListPath
00:05:38 :write as f, donc là on récupère le fichier dans cette variable f. On va écrire donc dans ce fichierf le contenu de la liste avec json.dump. Json.dump qui est une fonction du module json, ça me permet
00:05:51 :d'écrire des données à l'intérieur d'un fichier json. Donc le fichier json on l'a ouvert ici, à laligne ici, et le premier élément qu'on donne à cette fonction dump c'est ce qu'on veut écrireà l'intérieur du fichier. Donc là par exemple je pourrais mettre une chaîne de caractère ou
00:06:06 :n'importe quel autre type de données qui est valide pour le format json. Dans ce cas-ci moice que je vais écrire c'est la liste. Je veux l'écrire dans le fichier f, donc que l'on a ouvert
00:06:15 :ici avec l'instruction open, et je veux rajouter ensuite un indent de 4, donc ça ça me permetd'avoir quelque chose d'un peu mieux organisé. Si je vais voir le contenu de ma liste actuelle,
00:06:24 :vous voyez qu'ici on a une indentation de 4 espaces, donc c'est à ça que sert en fait ceparamètre indent auquel je passe la valeur 4. Si je lui passais 2 par exemple et bien on aurait
00:06:35 :uniquement deux espaces comme ceci, et si je ne spécifie pas ce paramètre indent 4, en fait onaurait la liste qui est écrite de cette façon. Donc comme ceci avec un espace entre les deux,
00:06:45 :et en fait moi ce que j'aime bien avec ce paramètre indent c'est que ça me permet d'avoir unaffichage qui est un peu plus plaisant à voir. En fait là on n'a que deux éléments de notre liste,
00:06:55 :donc ce n'est pas très grave, mais imaginez qu'on ait une liste avec 5000 éléments, si on ne metpas le paramètre indent ici, et bien les 5000 éléments vont se retrouver sur la même ligne,donc ça ne va pas être très pratique pour voir les différents éléments qui sont contenus dans
00:07:08 :notre liste. Dès le moment qu'on spécifie une valeur ici, que ce soit 2, 4, 6, 8, ou n'importequel nombre au paramètre indent, et bien automatiquement le module JSON va s'assurerde mettre notre liste en forme de cette façon, avec le nombre d'indentations ici que l'on aspécifié, mais au moins on aura quelque chose d'un peu plus agréable à visualiser quand on va ouvrir
00:07:27 :le fichier JSON. Donc voilà pour l'écriture de la liste sur le disque, et une fois qu'on a écrit laliste sur le disque, et bien on affiche à bientôt et on sort du programme. Donc voilà pour les
00:07:38 :lignes de code qu'il fallait ajouter dans notre fichier pour à la fois lire notre liste si elleexiste, et la récupérer dans notre variable liste grâce à la fonction json.load, et ensuite
00:07:49 :écrire cette même liste donc dans le chemin liste.json, grâce cette fois-ci à la fonctionjson.dump. On a également utilisé le module OS pour faire quelques vérifications, comme ici
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.