- 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
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette vidéo, on va voir comment créer très rapidement un script de quelques lignes avec Pythonqui va me permettre de trier tous les fichiers qui sont à l'intérieur de mon dossier de téléchargementen fonction de leur extension.
00:00:11 :Donc si le défi vous intéresse, vous pouvez essayer de le faire de votre côté avec vos propres dossiers.Il y a différents modules qui sont disponibles pour faire ce genre de choses avec Python.
00:00:20 :Dans cette vidéo, on va utiliser le module Patlibqui est disponible depuis la version 3.4 de Pythonet qui permet de faire ce genre d'opération très facilement.
00:00:29 :Donc pour les besoins du test, j'ai mis tous ces fichiers à l'intérieur d'un dossier que j'ai appelé triqui est à l'intérieur de mon dossier utilisateuret je vais vous montrer comment j'ai fait tout ça avec uniquement ces lignes de code icià l'intérieur d'un script Python.
00:00:43 :Donc la première chose que je fais, c'est d'importer Patdepuis le module Patlib. Donc ça, ça nous permet de gérer très facilementdes chemins de dossiers et de fichiers avec Python.
00:00:52 :Plutôt que d'utiliser le module OS qui ne fonctionne pasde façon orientée objet mais qui va nécessiter d'utiliserdes fonctions à chaque fois, dans ce cas-ci, on va utilisercette bibliothèque Patlib et la classe Patpour gérer très facilement ces cas de figure.
00:01:05 :Donc dans ce cas-ci, on a une première variable ici, dirsqui est égale à un dictionnaire qui vamapper en fait d'un côté les extensionset le dossier dans lequel je souhaite les mettre.
00:01:15 :Donc on va par exemple avoir un dossier pour les images,un dossier pour les vidéos, un autre pour les archives,les documents et finalement la musique.
00:01:22 :Si jamais je veux rajouter des extensions,il me suffit de rajouter une ligne ici en indiquant par exempleque je veux également déplacer les fichiers .wav
00:01:30 :dans le dossier musique.Donc ensuite, qu'est-ce que je fais ? Je récupère tout simplementle chemin vers mon dossier de tri.Donc déjà avec pat.home ici
00:01:38 :qui me permet de récupérer mon dossierd'utilisateur, donc sur ma COES ce seraitslash user slash tbash dans mon cas.Je concatène tout ça avec un slashet je mets ensuite une chaîne de caractère qui correspondà mon dossier dans lequel j'ai tousles fichiers que je souhaite trier.
00:01:53 :Je récupère ça dans une variable que j'appelle tridiret ensuite je vais récupérer tous les fichiersqui sont contenus à l'intérieur de ce dossier.Pour ça, j'utilise la méthode iterdirqui me permet de récupérer tous les fichierset dossiers à l'intérieur d'un dossier, donc dans ce cas-cià l'intérieur de tridir. Je fais
00:02:08 :une petite compréhension de liste ici pourne récupérer que les chemins qui sont des fichiers.Donc j'utilise isfile ici. Si onvoulait récupérer uniquement les dossiers, on pourrait faireisdir. Dans mon cas, je veux donc
00:02:18 :isfile et ça va me permettre de filtrertous les chemins pour ne récupérerque les fichiers et non pasles dossiers. Donc ici on récupère f, on fait
00:02:26 :f pour f, donc c'est-à-dire qu'on ne va pasmodifier les fichiers, on fait juste les récupérersi le chemin est un fichier.Donc là ça va nous retourner une liste avectous les fichiers à l'intérieur du dossiertri et on va ensuite tout simplementboucler sur cette liste de fichiers
00:02:40 :pour les déplacer. Donc qu'est-cequ'on fait ici ? On fait une autre concaténationqui va concaténer notredossier de tri avec le dossiercorrespondant en fonction de l'extension.
00:02:50 :Pour récupérer l'extension, on fait f.suffix. Donc ça, ça va nous récupérer parexemple .txt ou .move ou .jpg.Donc dans le nom de l'extension,on aura bien le point qui va être contenu.
00:03:00 :Donc il faut bien mettre ici dans notre dictionnairele point avec le nom de l'extension.Et dans le cas où l'extension n'est pas trouvée, on vatout simplement les mettre dans un dossierqui va s'appeler autre. Donc là j'utilise get
00:03:10 :sur mon dictionnaire. Si c'est trouvé,on va récupérer la valeur associéeà la clé. Donc si par exemple on a un fichiermp3, on va récupérer musique. Et si
00:03:18 :on a un fichier qui n'est pas géré parce dictionnaire, donc par exemple je ne sais pas, un fichiercsv, et bien dans ce cas-ci, cefichier ne sera pas trouvé dans le dictionnaire et on vautiliser la chaîne de caractère autreque l'on va concaténer avectridir ici. Donc si on a par exemple
00:03:32 :document, on va se retrouver avec .slashuser, .slashtybash,.slashtree, .slashdocument.Et si on a un dossier autre, ce sera .slashautreà la fin. On va ensuite créer
00:03:40 :le dossier de sortie, donc le dossierdans lequel on va ranger nos fichiersavec mkdir et on va envoyeren argument exist.ok="true".Ça, ça va nous éviter d'avoir une erreursi le dossier existe déjà. Donc
00:03:52 :on pourrait à la place faire une vérification, vérifiersi outputdir existe déjàen faisant if outputdir.existet là on inverserait,donc on dit si le dossier n'existe pas,et bien on le crée tout simplementet là on pourrait enlever le exist.ok,
00:04:06 :mais on peut aussi bien faire cette vérification comme cecien mettant exist.ok. Donc sile dossier n'existe pas, il sera créé, et siil existe, et bien on n'aura pas d'erreuret il ne sera pas recréé, donc on ne va pasécraser ce qui était déjà contenu à l'intérieur
00:04:18 :de ce dossier. Pour finir, onutilise tout simplement rename qui nous permet dedéplacer des fichiers, doncon va déplacer notre fichier d'origine qui est contenudans notre variable f ici, eton va le déplacer dans notre dossier outputet on va récupérer tout simplement f.name.
00:04:32 :Donc f.name, ça va représenterle nom de mon fichier. Donc pour vous montrerça ici, je vais faire un print de f.nameet on va mettre un continue tout simplement ici.
00:04:40 :Je lance l'exécution du scriptet vous voyez iciqu'on a uniquement le nom du fichieret non pas le chemin complet avec le dossier.Donc ça va nous permettre de concaténerle dossier d'output, donc par exemple ledossier slash tri slash documentpour les fichiers json, text ou pdf
00:04:56 :et de rajouter le nomd'origine du fichier à l'intérieurde ce dossier. Et en utilisant rename, çava donc déplacer ce fichierde sa position d'origine, donc là où il était dans ledossier de tri, au dossier d'outputdans lequel il est censé se retrouver.
00:05:10 :Donc voilà pour ce petit script, vous voyezça fait même pas une dizaine de ligneset ça va nous permettre de trier automatiquementtous les fichiers. Donc je vais vous montrer ici, là vous voyez
00:05:18 :qu'on a tout ça, c'est vraiment lebordel. Et si je reviens cette fois-ciexécuter mon script en cliquant surla flèche en haut à droite dans Visual Studio Code,ça va être assez rapide, vous allez voirmême pas une demi seconde pour exécuter tout çaet automatiquement on a bien tout rangé.
00:05:32 :Si on ouvre les documents, on a les fichiers json,les pdf, les fichiers texte,on a les images ici,les musiques, les archiveset on a tout ce qui n'a pas été prisdans mon dictionnaire dans Autre ici.
00:05:44 :Donc vous voyez que ça s'est effectué très rapidement,on pourrait utiliser un cronjobpour automatiser ce petit scriptpar exemple une fois par jour, donc tous les jourson pourrait dire que dans ce dossier,tu vas aller faire le tri automatiquement et comme çaon aurait un tri automatique qui se fait
00:05:58 :grâce à ce script. Donc j'espèrequ'avec cet exemple vous voyez le gros avantaged'utiliser PAT, c'est vraiment unebibliothèque qui est absolument géniale.Si ça vous amuse, vous pouvez refaire cet exempleavec le module OS et vous allez voir quec'est beaucoup plus verbeux, ça va êtrebeaucoup plus difficile à comprendre même
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.