- 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:06 :et là on va faire un tri. Donc on va en faitboucler à travers chaque fichier. Il va falloirrécupérer les fichiers et les trier en fonction de leur extension.
00:00:14 :Pour l'instant je vais juste mettre un pass et je vais pas aller plus loin, je vais revenir à mon déroulé ici.On voit que là on a fait la première étape, donc récupérer le chemin du dossier dans lequel se trouvent les fichiers, ça c'est bon.
00:00:23 :On a récupéré les fichiers à l'intérieur du dossier, ça aussi c'est bon. Maintenant il faut trier les fichiers selon leur extension.Alors comment on va pouvoir faire ça ? Il faut déjà récupérer l'extension, puisque là on a le fichier mais nous ce qu'on veut c'est l'extension.
00:00:34 :Alors comment est-ce qu'on peut récupérer l'extension d'un fichier ? Et bien avec un objet de type path ici avec pathlib, on peut utiliserl'attribut suffix. Donc si je fais print de file.suffix,
00:00:45 :donc attention ici c'est bien un attribut, ce n'est pas une fonction, donc on n'a pas besoin de mettre de parenthèse ici.On sauvegarde et on relance le script et là vous allez voir qu'on va se retrouver avec l'extension uniquement de chaque fichier.
00:00:56 :Donc là on a l'extension, ça va nous permettre ensuite à partir de cette extension de les trier dans le bon dossier.Alors qu'est-ce que je peux faire ici pour associer les extensions au dossier cible ?
00:01:05 :Il y a plusieurs façons de faire. La façon de faire que privilégie la plupart des débutants généralement c'est de commencer une structure conditionnelle.C'est ce qu'on est tenté de faire quand on sait pas trop comment faire de façon efficace. On va faire quelque chose de simple, c'est à
00:01:17 :dire utiliser un if et plusieurs elif. Donc dire si l'extension est de type mp3, et bien on va déplacer dans music.Si c'est wav, on va déplacer dans music. Si c'est flac, on va déplacer dans music, etc, etc.
00:01:28 :Le problème de ça, c'est que ça va faire une structure conditionnelle assez étoffée, donc avec beaucoup de lignes.On va voir par la suite qu'on peut faire beaucoup plus simple avec un dictionnaire.
00:01:36 :Donc je vais juste vous montrer quand même avec la structure conditionnelle ce que ça peut donner.Donc on pourra dire déjà qu'on va récupérer l'extension, donc on va dire file.suffix, et ensuite on va dire if extension.
00:01:46 :Alors là on pourrait faire if extension est égale égale àentre guillemets point mp3.Alors dans ce cas-ci, on va juste faire un print, on va dire on bouge dansmusic.
00:01:57 :Là vous pourriez tenter de faire la même chose avec les autres types, donc de dire if extension égale égale à point wav.Alors là aussi on bouge dans music.
00:02:04 :Donc là c'est vraiment une façon très peu optimale de faire, puisque à chaque fois vous voyez qu'on bouge dans le même dossier, doncque ce soit un mp3 ou un wav.
00:02:11 :Donc si vous faites un if et un elif à chaque fois pour tous les types, ça va être assez long. Ce qu'on pourrait fairedéjà pour simplifier, c'est utiliser une liste. Dire que si l'extension est à l'intérieur de la liste qui contient soit mp3,
00:02:22 :soit point wav, soit, et le dernier je ne sais plus c'était le flac, voilà, donc soit ça, soit le flac.Donc si notre extension est à l'intérieur de tout ça, donc si c'est mp3 ou wav ou flac,alors on bouge dans music. Après on peut faire la même chose avec les autres extensions, donc avi, mp4, gif ici.
00:02:39 :Donc là je pourrais dire if extension intout ça. Et là il faut juste rajouter les guillemets, le point et tout ça. Donc là je vais mettre
00:02:46 :voilà comme ceci. Je le fais assez vite puisque de toute façon on va le changer assez rapidement.Et là je dirais dans vidéo. Donc ça c'est une façon de faire, de faire des if avec if extension in ça, if extension in ça,
00:02:57 :et on bouge à chaque fois dans différents dossiers.Ça marche, c'est correct. Moi ce que je préférais faire, c'est utiliser un dictionnaire. Là vous voyez que j'ai bien pris soin d'utiliser le mot
00:03:07 :associer les extensions au dossier cible. Donc ce n'était pas un mot totalement anodin, puisque quand on parle d'associationgénéralement ça devrait vous mettre la puce à l'oreille qu'on peut utiliser un dictionnaire. Donc un dictionnaire c'est très pratique
00:03:17 :généralement pour éviter d'avoir à faire des conditions comme ceci.Puisque des if et l'if en cascade comme ça, c'est pas forcément la meilleure façon de faire. Ça marche,
00:03:25 :mais ça va vite devenir assez chargé. Moi ce que je préfère, c'est donc ici au début de mon script par exemple,définir un dictionnaire que je vais appelerextension mappinget qui va associer des chaînes de caractère à des dossiers. Donc on fait un dictionnaire et on va dire que par exemple
00:03:39 :si on a mp3, et bien mp3 on va le mettre dans musique.Si on a .wav, lui aussi on va le mettre dans musique. Si on a par contre un .mp4, lui on va le mettre dans vidéo.
00:03:50 :Si on a les documents, donc les documents je crois que c'était txt, voilà. Donc si on a .txt, on va le mettre dans documents.Et on va faire ça pour toutes les extensions. Et ce que ça va nous permettre après, c'est tout simplement
00:04:02 :de récupérer à partir de dictionnaire la valeur qui est associée à l'extension.Donc ça va me permettre d'avoir un seul if qui va récupérer le dossier dans lequel on souhaite mettre le fichier en fonction de l'extension.
00:04:13 :Donc je vais enlever toute ma structure conditionnelle ici.Et ce que je vais faire, c'est créer une variable qui va s'appeler dossier cible par exemple, et qui va être égale à extension mapping,donc mon dictionnaire, sur lequel on va récupérer l'extension. Donc on va récupérer avec un get
00:04:27 :l'extension ici. Donc je pourrais le mettre directement, puisque là en fait je ne vais pas réutiliserextensions à différents endroits. Donc là je n'ai pas forcément besoin de faire une variable intermédiaire. Donc je peux mettre directement file.suffix ici.
00:04:37 :Donc là ce qu'on va faire, c'est qu'on va récupérer dans cette variable dossier cible la valeur associée à l'extension actuelle.Donc par exemple si on a un fichier de type mp3, on va récupérer avec cette ligne ici la chaîne de caractère musique.
00:04:50 :Et ce qu'on peut faire avec cette méthode get, c'est donner une valeur par défaut.Ce qui est très pratique, puisque imaginez qu'on soit en présence d'une extension qui n'est pas dans notre dictionnaire. Donc imaginez qu'on ait un
00:04:59 :fichier par exemple alembic, donc un fichier de 3d.Et bien ce fichier n'est pas géré, et ce fichier on veut le mettre à l'intérieur d'un dossier divers.
00:05:06 :Donc c'est parfait, puisque là on va pouvoir passer un deuxième argument à get, qui va être la valeur par défaut qui va êtreutilisée si jamais on n'a pas d'association dans notre dictionnaire.
00:05:16 :Donc si on n'a rien qui est associé à notre extension, et bien on va retourner divers.Donc je vais pas aller plus loin, je vais faire un print de dossier cible,et on va faire un print de file.suffix également, pour voir si tout correspond bien. Donc si on a bien le dossier cible qui est
00:05:30 :associé à la bonne extension. Donc je sauvegarde, je relance tout ça.Et là vous voyez que quand on a un mp3, on a bien musique. Quand on a txt, on a bien document.
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.