Session du 21 juin 2024 à 21h00
Pratique & Live Coding
Structures de Données
Bases du Langage
Veille & Discussions
Fichiers & Système
Librairie Standard & Modules
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Trier ses fichiers avec Python et pathlib
Live-coding projet formation "Trieur de fichiers", retour projet mensuel sous peu.
00:00:00 :Il n'est pas facile, cliage de dossier.Est-ce que tu as le lien de l'exercice ?On peut peut-être voir ça ensemble si tu veux.J'arrive pas à le retrouver comme ça.
00:00:18 :Tu as le lien de l'exercice ? On peut voir ça ensemble si tu veux.Tu as le lien de l'exercice ? On peut voir ça ensemble si tu veux.
00:00:33 :J'arrive pas à le trouver comme ça.Tu as le lien de l'exercice ? On peut voir ça ensemble si tu veux.Ah oui, le trieur de fichiers, c'est ça le projet trieur de fichiers ?
00:00:59 :Ah oui, c'est pas un exercice, c'est le projet complet.Ah oui, c'est pas un exercice, c'est le projet complet.C'est quelle partie du projet où tu rencontres un peu plus de difficultés ?
00:01:23 :On va voir un petit peu à quoi ça ressemble.Voyons voir.Au niveau de la boucle à faire,c'est quoi la boucle à faire ?
00:01:42 :La boucle à faire, c'est un exercicequi est un exercice,c'est un exercice qui est un exerciceau niveau de la boucle à faire.Alors la boucle, c'est quelle étape ?
00:01:57 :C'est quand tu veux récupérer le chemin ou quand tu veux récupérer les fichiers ?Non, c'est boucler sur les fichiers et les trier, c'est ça ?
00:02:03 :Voilà pour la boucle.C'est sur les fichiers et les trier.Je ne sais pas si tu l'as hébergé sur GitHub ou quelque choseou à la limite tu veux peut-être faire un partageou je ne sais pas si tu as moyen de me partager le codecomme ça je vois un petit peu sur quoi tu bloques,
00:02:36 :sur quelle partie de la boucle tu as du mal.On va voir un petit peu où tu en es.Est-ce que tu as hébergé ton code sur GitHub ou quelque choseou tu l'as juste en local ?
00:03:07 :Je vais essayer de le faire un petit peu avec toiparce que tu en es et tu m'arrêtes si je vais un petit peu trop loin.
00:03:32 :Je vais vous faire un petit partage, ça pourra t'intéresser aussi à Wilfrid.C'est un projet qui est dans la formation de base,on tire accès aussi avec le Premium.
00:03:41 :On peut le faire ensemble,je ne sais pas trop combien de temps ça va durer,peut-être que je n'irai pas jusqu'au bout mais au moins on peut peut-être avancer,ce n'est pas un très très gros projet non plus.
00:03:53 :Je vais partager cet écran là.Tu as la feuille de présence qui est épinglée dans le chat.On va revoir le projet sur les fichiers,sur le trior de fichiersqui est là dans la formation des bases de Python.
00:04:12 :On va reprendre un petit peu l'énoncé.Dans les sources, on vous donne un dossier tri-fichiers-sourcesqui contient des fichiers de différents types avec des images, des vidéos,des documents PDF, tout ça.
00:04:30 :Vous pouvez partir de ce dossier ou utiliser n'importe quel dossier de votre disque dur.Le but de ce script est de trier les fichiers selon leur type.
00:04:36 :Par exemple, vous devez regrouper tous les fichiers .mp3ou .wav dans ce dossier musiqueet tous les fichiers PDF dans le dossier documents.Qu'est-ce qu'il vous dit ensuite pour vous aider ?
00:04:51 :D'utiliser la bibliothèque passlib,la méthode iterdir,les attributs name et suffix de l'objet de passlib de type path,et la fonction dir pour inspecter ces objets-là,mkdir pour créer les dossiers si vous êtes sur Linux.
00:05:09 :On va essayer de prendre ça un petit peu depuis le début.On a dit que ça pourrait être intéressantd'utiliser le module pass de passlib.
00:05:24 :Déjà, on va l'importer.Ensuite, le but est de prendre le maximumd'extensions de fichiers possibles pour les trier.Pour ça, on va faire un simple dictionnairequ'on va appeler par exemple extension fichier.
00:05:44 :Ici, on va mapper un dictionnaireoù on va dire que pour chaque type de fichier,on va indiquer dans quel dossier on veut le mettre.
00:05:54 :Dans l'énoncé, on vous a dit par exemple le .mp3,on veut que ça finisse dans un dossier musique.Et on veut aussi les .wavqui sont aussi des fichiers musique.
00:06:10 :On va les mettre dans le dossier .wav.De cette façon-là, vous pouvez faire un dictionnaire.Et ce n'est pas grave si deux extensions différentesse retrouvent avec le même mapping.
00:06:24 :Ça voudra juste dire que ces deux types de fichiers-làiront dans le même dossier final.Cette valeur-là servira à indiquerquand on voudra mettre un fichierdans un dossier musical.
00:06:39 :C'est ce qu'on va faire.Quand on voudra déplacer le fichier,on mettra cette valeur-là à la fin de notre cheminpour se déplacer.Par exemple, le chemin d'accès,imaginons que c'est C, Users, Téléchargements.
00:06:58 :Ce n'est pas très joli.Vous voulez le mettre dans un sous-dossier musique.Vous prenez votre chemin d'accès de baseoù vous voulez trier vos fichiers.
00:07:10 :Ici, ça va mettre tous les points MP3 et tous les points WAVdans le sous-dossier musique.On peut le faire sur tous les différents types de fichiers.
00:07:30 :On va s'en rajouter quelques-uns.Les points MP4, par exemple, on peut les rajouter.On va les rajouter pour des vidéos.On va rajouter des points PDF,on a dit qu'ils devaient être dans le dossier documents.
00:07:45 :Qu'est-ce qu'on peut rajouter d'autre d'intéressant ?On peut rajouter tout ce qui est images,donc points PNG dans les images.On peut rajouter des points JPEG dans les images aussi.
00:08:01 :Toujours dans les documents,on peut rajouter des points textes.J'ai quasiment deux de chaque.Je réfléchis à quoi d'autre comme extension de fichiers pour les vidéos.
00:08:14 :Première chose à faire,faire de votre dictionnaire où vous allez mapper les extensions de fichiersvers les dossiers dans lesquels vous voulez les stocker.C'était assez clair pour vous ce qu'il fallait faire à ce niveau-là ?
00:08:37 :Bonsoir.Je peux t'expliquer directement là où je bloque ?Oui, je voulais le refaire depuis le début,mais est-ce que ça déjà t'avait réussi ?
00:08:51 :C'est assez facile les dictionnaires,parce qu'en plus je les ai vus juste avant de faire l'exercice.Là où je bloque, c'est dans les boucles.Pourquoi je bloque dans les boucles ?
00:09:03 :Parce qu'il y a le langage C au début,et on est obligé de d'abord faire les valeurset ensuite quand on boucle,on met les variables qu'on a assignées au début.
00:09:15 :Alors que là, dans Python,ce qui me bloque un peu,c'est qu'on peut mettre une variable directement dans la bouclesans l'avoir mis.Et cette variable, tu peux l'utiliser après dans ta boucle.
00:09:30 :C'est ça qui me bloque énormément.Je n'arrive pas à avoir la logique.En fait, Python est un peu différent à ce niveau-là.En gros, tu peux lui assigner au moment où tu crées ta boucle,une variable, le nom que tu veux,et c'est la variable qui va prendre la valeur
00:10:00 :de ce que tu vas boucler.Et donc cette variable-là, puisqu'elle va prendre une valeur,même si tu viens de la créer dans la boucle,elle va prendre une valeur et donc tu vas pouvoir l'utiliser.
00:10:12 :L'exemple le plus courant, quand tu fais une boucle,ça va être la boucle FOR et ça va être un FOR i in range.Je pense que ça tu connais.
00:10:21 :Attends, je vais juste accepter quelqu'un pour qu'on soit valide.L'exemple le plus courant, c'est un FOR i in range.Ton i, il n'est jamais défini avant.
00:10:31 :En l'occurrence, on dit i parce que c'est i qu'on appelle le plus souvent,mais tu pourrais l'appeler n'importe comment.I, c'est pour incrémentation le raccourci.
00:10:40 :Ce i-là, tu ne l'as pas défini avant.Mais ce i-là, il va prendre la valeur de ta condition.Là, par exemple, in range 10, c'est-à-dire que ton i va boucler de 1 à 10.
00:10:49 :Est-ce que tu comprends mieux comme ça ?Là, c'est dans l'exemple où ta condition, c'est range 10.C'est-à-dire qu'au fur et à mesure où ça va avancer,ton i va parcourir les 10 valeurs.
00:11:01 :Ça va boucler pendant 10 fois.Après, si je change mon i et que je lui ajoute tout de suitegenre plus 5,ça va rajouter 5 à sa valeur.
00:11:16 :Mais la boucle va boucler 10 fois.Ça, c'est la première chose.Nous, dans notre cas, je continue comme l'exercice.C'est juste après la boucle, mais deuxième chose à faireune fois après avoir mappé les extensions de fichiers,c'est d'indiquer votre répertoire de base où vous l'étriez vos fichiers.
00:11:35 :En général, on appelle ça la base dir,dir pour directory et base parce que c'est le répertoire de base.Pour ça, on utilise le module path de passlibqui permet d'indiquer que c'est un chemin de fichier sur votre ordinateur.
00:11:47 :Et en l'occurrence,par exemple, je vais aller prendre mon dossier de téléchargement.Par un sel.Et là, vous le mettez votre chemin, entre guillemets, mince.
00:11:59 :Voilà, mon Moïse, c'est juste qu'il est sur mon dossier D.Et là, on va aller sur mon dossier B.Et là, on va aller sur mon dossier C.
00:12:14 :Et là, on va aller sur mon dossier D.Et là, on va aller sur mon dossier C.Et là, on va aller sur mon dossier D.
00:12:23 :Voilà, il est sur mon dossier D.On va s'en contenter pour l'instant.Mais vous, en général, vous aurez quelque chose du style...Bon déjà, il faut que je fasse ça.
00:12:38 :Vous aurez quelque chose du styledownloadpar votre utilisateur. Par exemple, moi, imaginez que je m'appelle Kevin.Kevin, download. Vous aurez quelque chose de style de votre côté.
00:12:50 :Moi, c'est juste que je l'ai mis sur un autre disque dur, mon dossier download.Donc, j'arrive à ça.Peu importe.Vous mettez le chemin d'accès du dossier que vous voulez trier.
00:13:02 :Pour les derniers qui viennent d'arriver, si vous venez du Toza ou du CPF,vous avez la feuille de présence qui est en épinglé dans le chat.
00:13:12 :Et on est en train de voir le projetde la formation Python de basequi est de construire un trieur de fichiers.Donc, on est en train de revoir ça ensemble.
00:13:25 :Pour l'instant, ce qu'on a fait, très simplement,c'est qu'on a utilisé la bibliothèque PAFIpour définir notre chemin d'accès où on veut trier les fichiers.
00:13:34 :On a fait un mappage avec un dictionnairepour indiquer les types de fichiers qu'on veut trier et vers quels sous-dossierson veut les ranger.Donc, on a des fichiers de musique, etc.
00:13:46 :Maintenant, on va arriver au point intéressant qui estqu'on va vouloir construire notre boucle.Notre boucle, là, du coup,on vous a dit tout à l'heure dans l'énoncé, je vais vous le remettre,il y a quand même pas mal de petits conseils,que pour récupérer la fichier à l'intérieur d'un dossier, vous pouvez utiliser la méthode
00:14:04 :iterdir qui va permettre d'itérer à l'intérieurdu dossier que vous donnez pour récupérer les fichiers.Ensuite,vous pouvez utiliser les attributs names et suffixesd'un objet de type PAF, donc de la bibliothèque PAFLibpour récupérer le nom du fichier et de son extension.
00:14:23 :Ensuite,on peut utiliser la fonction dir pour inspecter ces objets-là,mkdir pour créer le dossier,et si on veut déplacer, on peut utiliser renamesur Linux et Mac, ça va êtreCP, ça dépend de votre OS.
00:14:42 :Pour notre boucle, on va direque nos fichiers, on va reprendrele concept que je vous ai dit tout à l'heure,on va refaire une boucle,nos fichiers vont boucler dansnotre base directory qu'on a définie juste avant,et pour itérer dans les dossiers à l'intérieur, on va utiliser la méthode
00:15:03 :iterdir qu'on a vue juste dans l'énoncé qui nous est donnée.On vérifie juste que c'est un fichieravec une autre condition, on vérifie que c'est un fichier en faisantfispile, tout simplement.
00:15:15 :Je vous la réexplique pas à pas.On map, donc en gros on assignenotre boucleà une variable, ici à fichier, donc fichier va contenirtous nos fichiers. Notre boucle, comment on la construit ?
00:15:30 :On fait une boucle avec une variablequ'on assigne, là par exemple f pour fichier,où on va parcourir notre base dir,donc le chemin d'accès qu'on a spécifié, on veut trier les fichiers,et pour itérer à travers et récupérer les fichiers,on utilise la méthode iterdir qui nous est donnée dans l'énoncé.
00:15:48 :Ensuite, pour pas qu'on récupèretout type de fichiers non plus, enfin tout type de choses,par exemple on veut pas récupérer des dossiers, on veut vraiment que ce soit des fichiers,on peut utiliser la fonction isFilede Python, donc c'est une fonction intégrée,qui va en fait directement, comme iterdir,
00:16:06 :vérifier si le fichier qu'elle a récupéré juste avantest bel et bien un fichier ou c'est pas un dossier ou quelque chose d'autre.Est-ce que c'est clair pour cette boucle-là,Naïr, notamment, après les autres fichiers, n'hésitez pas à diresi c'est clair pour ça.
00:16:21 :Voici-là.Oui, je voulais savoir,iterdir, il itère sur le dossier, le fichier ou le dossier ?iterdir,je te le remets, hop,il te permet de récupérer les fichiers à l'intérieur d'un dossier que tu donnes,donc un chemin d'accès que tu donnes.
00:16:42 :En fait, iterdir, parce que ça va itérerà travers le directorie que tu donnespour récupérer les fichiers.D'accord.Ok, nickel.Maintenant qu'on a récupéré tous nos fichiers,on va du coup repouvoir itérer à travers ces fichiersavec une autre boucle FOR, mais là, tout simple,pour FOR fichier IN fichier.
00:17:09 :On se casse pas la tête.Maintenant, est-ce que vous avez des pistes un petit peu de ce qu'on veut faire ?Parce que peut-être vous n'êtes pas arrivé jusque-là.
00:17:18 :Je vais s'écrire dans le chat, notamment Naïr, Wilfried, les autres, si vous l'avez déjà fait.Pour ceux qui ne l'ont pas fait ou qui s'en sont arrivés là,est-ce que vous avez une petite idée de comment on peut faire ?
00:17:27 :Maintenant qu'on a récupéré tous nos fichiers,on va boucler à travers tous ces fichiers.Qu'est-ce qu'on fait ?Donc là ? Ok.Les autres, vous avez des petites idées ?
00:17:48 :Je vous remets l'énoncé rapidement,et je vous remets juste après aussi,ça c'est pour l'énoncé,pour la petite aide.On va notamment,on va faire un petit peu d'échantillonnage,on va faire un petit peu d'échantillonnage,on va faire un petit peu d'échantillonnage,on va notamment dans un premier temps s'intéresser à ça.
00:18:38 :On va réutiliser les méthodes de base de Python,et on a déjà défini juste au-dessus.On va les mettre dans les nouveaux emplacements,mais j'ai oublié la méthode utilisée.
00:18:54 :Ok.Ok.Ok.Ok.La méthode mkdir, c'est juste après mkdir.Enfin, c'est dans un deuxième temps.En fait, ce qu'on va faire dans un premier temps,c'est qu'on va choisir notre dossier cible.
00:19:38 :Et pour ça, on va réutiliser le dictionnaire qu'on a défini plus haut,et que ça on va fichier.On va aller chercher notre valeur qu'on veut.
00:19:49 :Donc là, nous ce qu'on veut récupérer, c'est le suffixe.Donc le suffixe, méthode de base de Python,quand vous avez,vous récupérez ce qu'il y a après le point.
00:20:01 :Et là, par exemple, on va aller l'envoyer dans un dossier d'hiver.Là, on définit notre dossier cible.Maintenant, ce qu'on veut, c'est définir aussi son chemin absolu.
00:20:14 :Pour ça,il faut qu'on rajoute,qu'on fasse une combinaison de ça et de notre dossier cible.Donc le dossier cible absolu,ça va être doncnotre répertoire de baseslash notre dossier cible.
00:20:37 :Comme ça, on arrive dans notre dossier cible.Ensuite,maintenant qu'on est dans notre dossier cible,on va pouvoir créer le dossier.Maintenant qu'on a défini notre dossier cible, on va pouvoir créer le dossier.
00:20:52 :Maintenant qu'on a défini son chemin d'accès.Pour ça, on utilise la méthode mkdir.Sur notre dossier cible absolu,on utilise la méthode mkdir.On sait bien qu'avec ExisteOK que c'est bien un chemin d'accès valideet qu'il ne nous crée pas des dossiers à un endroit qui n'existe pas.
00:21:10 :C'est une simple sécurité.Je reprends.On définit le nom de notre dossier cible.Pour ça, c'est simple.On va les récupérer dans notre dictionnaireavec le mapping qu'on a créé.
00:21:28 :On va les récupérer la valeur de notre suffixe.Là-dedans,le dossier cible va prendre l'une de ces valeurs-là.Par exemple, si notre suffixe est .mp4,
00:21:40 :la valeur de dossier cible va être vidéo.Si le fichier .suffix est .png,la valeur de notre variable dossier cible va être image.Et enfin, si la variable de notre fichier suffixn'existe pas dans notre dictionnaire,sa valeur par défaut sera divers.
00:21:58 :Dans un deuxième temps,maintenant qu'on a défini le nom de notre dossier,on définit son chemin d'accès absolu.C'est ça, un chemin d'accès absolu.On va récupérer çaet on va rajouter le nom de notre dossier.
00:22:17 :Tout simplement.Excuse-moi de te couper,mais pourquoi avoir réassigné encore une variableen mettant dossier cible absolu ?Parce que cette variable-làpermet juste de contenir le nom du dossier.
00:22:35 :C'est deux variables différentes.On récupère le nom du dossierpar rapport à notre suffixe.Par exemple, si c'est un .png, ce sera image.Alors que ça, c'est le chemin d'accès au dossier.
00:22:53 :D'accord, merci.Une fois qu'on a récupéré notre chemin d'accès,on va pouvoir créer ce dossier-làen vérifiant que le chemin d'accès est bien valide.Voilà.
00:23:12 :Est-ce qu'il y a des questions pour ça pour l'instant ?Où est-ce qu'il est ?Oui, la ligne 25,là où on a le dossier cible.
00:23:25 :25, oui, ici ?Oui.Bon, j'imagine,pendant la première itération,on a dit for fichier in fichier,donc disons que la première itération sera.mp3.
00:23:47 :Oui.Donc fichier aura.mp3-musique.Oui.Et si on met get fichier suffixe,comment il sera que ce musique a récupéré ?C'est ça que je ne comprends pas.
00:24:08 :C'est là qu'on utilise le mapping du dictionnaire.Tu me diras que c'est mieux, Christophe ?En fait, les fichiers-là,c'est comme si on récupéraitune liste contenant tous nos fichiers.
00:24:24 :Par exemple, on va avoirdiaporama.png,on va avoir son.mp3, etc.On va parcourir cette liste-là,un à un,et donc ça, c'est fichier.Ça, c'est fichier.
00:24:45 :Le .suffix nous permet de récupérer juste ça.OK ?Donc, avec le .get,c'est un dictionnaire, c'est le principe de base d'un dictionnaire,on va aller chercher la valeur associée à ça.
00:25:00 :En l'occurrence, ici, par exemple, c'est .png.Donc ça va aller get dans notre dictionnaire.C'est quoi la valeur associée à .png ?Eh bien, c'est image.
00:25:12 :Donc notre variable dossier-cible va prendre la valeur image.Et si notre suffix n'existe pas dans le dictionnaire,il va prendre la valeur par défaut divers.
00:25:21 :Est-ce que c'est plus clair, là ?OK, je vois.Oui, je vois.Mieux ?Peut-être que ça va plus lui parler.Il a zoomé, là, j'ai du mal à voir.
00:25:42 :OK.Comme tu peux le voir,il a récupéré.En fait, le pass a récupéré tous les fichiers.Et donc, si on parcourt fort fichier une fichier,il m'affiche tous les fichiers qui avaient mon dossier d'échargement.
00:26:19 :En ne récupérant que leur suffix,on ne récupère que ça à la fin.C'est-à-dire qu'il a récupéré tous les fichiers.Donc, il a récupéré tous les fichiers.
00:26:31 :En ne récupérant que leur suffix, on ne récupère que ça à la fin.Tu vois ?C'est plus clair en voyant comme ça.Du coup, par exemple,si j'ai un point PNG,il va le trouver là-dedans,et du coup, ce sera l'image.
00:26:52 :Par contre, ici, j'ai un point EXE,il n'est pas dedans, donc il ira dans divers.Tu vois ?Voilà.Ça me fait penser que je peux en rajouter quelques-uns.
00:27:07 :J'en profite,quitte à faire le tri de mon dossier d'échargement.On va se rajouter ça,on va se rajouter ça.En fait, j'étais confondu. Je vois maintenant.
00:27:22 :En fait, on est sur le download.Oui. En fait, tu définis.C'est toi qui définis ton propre dossier. Moi, j'ai pris download.Ça peut très bien être ton bureau, par exemple.
00:27:34 :Cette boucle-là sert à récupérer tous les fichiers.Ça va être un objet PAF,qui va contenir tous les fichiers qu'il y a dans ton dossier que tu as choisi là.
00:27:43 :Par exemple, moi, c'est download.Ensuite, tu vas itérer dedans.Du coup, tu vas avoir tous les noms des fichiers.C'est bon.Pour chaque fichier,on a récupéré le dossiervers lequel il sera stocké.
00:28:04 :On a défini son commande absolue.On prend ça et on rajoute derrière...On rajoute derrière slash, par exemple.Si c'est vidéo, on va rajouter slash vidéo.
00:28:19 :Et on crée le dossier, s'il n'existe pas.S'il existe, on ne crée pas.Mais s'il n'existe pas, on crée.Maintenant, on veut déplacer notre fichiervers ce dossier.
00:28:38 :Pour ça, on va définir notre fichier cible.Son chemin d'accès,ça va être...Je vais peut-être vous mettre absolu, pour que ce soit plus clair.
00:28:50 :On parle de chemin d'accès et du fichier en même temps.C'est à dire que,on va définir où le fichier va êtrerecréé, déplacé.Pour ça, on récupère notre nouveau chemin d'accès.
00:29:06 :Ici, on est d'accord que c'est équivalentà ça.Par exemple, si c'est un point PNJ, c'est équivalent à ça.Jusque là, on est OK.Derrière, on rajoute un slash.
00:29:22 :Le nom de notre fichier.Par exemple, image.png.Ici, c'est file fichier.name.On vous a dit d'utiliser dans l'énoncéname et suffix pour récupérer le nom et le suffixd'un fichier avec un objet passe.
00:29:40 :Je vais le retrouver.Le suffix nous a permis d'aller chercheret de parcourir un dictionnaire.Ici, le name nous permet de récupérer le nom du fichier.
00:29:52 :Et du coup, ça va donnerça.Est-ce que cette ligne est OK ?Est-ce que tout le monde l'a compris ?Je vais expliquer si ce n'est pas clair, notamment au niveau du absolu.
00:30:07 :Je vais l'enlever.Je vous explique très rapidement.Par exemple, le dossier cible, ça va êtreun sous-dossier image dans le dossier téléchargement.On va dire où on veutranger notre fichier cible.
00:30:25 :Notre fichier image, par exemple, on le veut ranger dans le sous-dossierimage. Pour ça, on prend le cheminabsolu qu'on a défini juste au-dessus.Et on rajoute derrièrele nom du fichier.
00:30:40 :Pour déplacer le fichier, on a vudans l'énoncé qu'on pouvait utiliser la méthode rename.Pour ça, rien de plus simple,on va tout simplement prendre notre fichier, appliquer la méthoderename dessus sur notre fichier cible.
00:31:05 :Voilà.On déplace notre fichier avec la méthode rename.Je vais vous dire si ça vous intéresse.C'est comme le copy, le cpde Linuxet de Mac, de Unix.
00:31:24 :En gros, pour renommer ou pour déplacerun fichiersur Linux,vous avez le mv, le move ou le copy.En fait, c'est plutôtle copy que le mv.
00:31:42 :C'est un peu les deux, maisles deux sont utilisables. Il y a le mv pour move et le cppour renommer.Les deux sont viables.
00:31:54 :N'hésitez pas à me corriger, je suis peut-être en train de dire une connerie.C'est plutôt mv que cp alors.Autant pour moi.Voyez-le comme la méthode mv de Linuxqui permet à la fois de déplacer un fichierou à la fois de le renommer.
00:32:13 :Sur Linux, il n'y a pas de clic droit renommé sur un fichier.Pour le faire, vous le déplacez de son nom d'originevers le nouveau nom. Là, c'est pareil.
00:32:22 :Vous le déplacez de son endroit d'origineavec la méthode rename et vous le renommez vers le nouveau chemin d'accès.Ça marche de la même façon.
00:32:31 :On choisit notre fichier et on le renomme versnotre nouveau chemin.On est pas mal du tout.Je vais voir s'il n'y a pas d'autres extensions de fichiers qui m'intéresseraient.
00:32:43 :Je vais rajouter un petit .ziparchive.Je vais rajouter d'autres.On est pas mal.Et normalement, si je ne fais pas de bêtises,si je faisvirgule,PDF, je l'ai mis juste icidans les documents. Et ça, c'était obligatoire dans l'énoncé normalement.
00:33:16 :Vous demandez explicitementque les PDF doivent être dans le dossier documents.MP3, voilà, dans musique.Et moi, j'en ai rajouté d'autres par la suite.Et du coup, maintenant, si je l'exécute,il a tourné.
00:33:35 :Maintenant, si je veux voir mon dossier téléchargement,vous voyez, magnifique.On a tous nos dossiers qui sont créés, applications qui contiennent nos .exe,les archives qui contiennent les .zip,
00:33:47 :les documents qui contiennent les PDF,images qui contiennent les png et les jpeget divers qui contiennent tout le reste. Bon, en l'occurrence, là, je n'en ai pas.
00:33:56 :Mais voilà, tout a été bien créé, tout a été fait nickel.OK, on est pas mal du tout.Est-ce qu'il y a des questions sur cet exercice-là ?
00:34:09 :Est-ce que c'est plus clair pour toi, du coup, Naïr,et pour Evoltree aussi ?Ça permet de faire un petit peu des révisions aussi sur le mappagede dictionnaire, sur les méthodesde base de Python, donc iterdir, isfile, get,readname, mkdir, voilà, des méthodes aussi relatives aux fichiers.
00:34:29 :OK, je vous laisse ça sous les yeux. On a encore une petite,une bonne dizaine de minutes. Est-ce qu'il y a des questions ? Est-ce qu'il y a des sujets
00:34:38 :que vous voulez aborder ou un petit exercice que vous voulez revoir ?Ou est-ce que vous voulez peut-être que je réexplique certains trucs de cet exercice-làen petit publier ?
00:34:47 :Désolé, moi, c'est vraiment le faitde rassigner à chaque fois des variablesà nouveau, à nouveau, à nouveau, sans même les avoirassignées déjà auparavant.
00:35:00 :C'est vraiment ça, moi, dans la boucle,qui me perturbe à chaque fois.Ici ? Non, non, regardez.Là, par exemple, dossier cible, on a assigné la variable,on a mis ça, ensuite, on re-assigne encore,à chaque itération, la valeur est ré-assignée.
00:35:19 :C'est ça, en fait, qui me chande.Pour le coup, ça, c'est juste à prendre en main.C'est un principe de base de Pythondans les boucles. Et c'est bien pratique.
00:35:31 :Tu verras par la suite qu'une fois que tu auras compris, tu seras bien contentque ça marche comme ça. Il y a plein de cas où c'est bien pratique
00:35:37 :de pouvoir ré-assigner la valeur à chaque itération.Et comme je te disais, l'exemple courant, c'est que tu fais une bouclei for in range 10.
00:35:47 :Donc j'affiche mon i,je rajouteplus ou égale à 2.Une fois que je peux ré-assigner une valeur,derrière, je peux ré-afficher i à 0, par exemple.
00:36:05 :Et tu vas voir queà chaque fois, au début, elle est ré-assignée à 0,puis après, je lui remets 2.A chaque itération, tu peux lui ré-assigner la valeur que tu veux.
00:36:22 :Et il y a beaucoup de cas où c'est bien pratique. Par exemple, dans notre cas,où à chaque itération, comme c'est un nouveau fichier,c'est une boucle for, on parcourt.
00:36:31 :Là, on parcourt les fichiers.A chaque nouveau fichier, on veut rechanger le dossier cible.Donc c'est bien pratique quand même qu'on puisse ré-assigner la valeur.
00:36:40 :Sinon, ce serait compliqué.Pour le coup, je n'ai pas fait de C. Enfin, moi, je n'ai fait que du C sharp,et je n'en ai pas fait depuis très longtemps. Je ne sais même pas si c'est pareil que le C.
00:36:49 :Mais je ne saurais même pas dire comment on fait ça en C.Alors que là, c'est quand même... Une fois que tu l'as compris,c'est assez explicite et bien pratique.
00:36:58 :En fait, le C, c'est simple. Il y a le main. Ensuite, juste après, on assigne les valeurs.Par exemple, on va mettre le nom d'une valeur.
00:37:04 :On va mettre, je ne sais pas, ma variable.On va assigner la valeur et on ne pourra plus changer après.Une fois qu'on a assigné, par exemple, 20 à la variable ma variable,on ne pourra plus le changer après.
00:37:16 :Alors que là, dans Python, on peut vraiment tout le temps changer constamment.Et ça me perturbe parce que, en gros, vu que je n'ai pas l'habitude,c'est ça qui me perturbe.
00:37:25 :Oui, les variables, peu importe où elles sont,elles peuvent tout le temps être changées, tout le temps être modifiées.Sinon, il y a certains cas,on appelle ça des constantes, où en général,au lieu d'écrire, tu vois que souvent,tout le temps, on les nomme en minuscules,les noms des variables.
00:37:47 :Si tu veux dire qu'une variable ne doit pas changer,donc c'est une constante, tu vas la nommer en majuscule.Et souvent, c'est le cas des variables d'environnement, par exemple.
00:37:56 :Là, c'est un dictionnaire,mais imaginons que,tu vois ça, par exemple.Là, c'est un objet, mais imaginonsun répertoire à trier.Ça, je ne veux jamais le changer.
00:38:15 :C'est mon dossier d'unload.Du coup, je l'écris en majuscule.Cette variable-là, je ne la changerai pas.Par exemple, c'est le répertoireà supprimer.Un répertoire à supprimer, tu vois.
00:38:33 :Et on veut supprimer, par exemple, tous les répertoires que je viens de créer.Je vais dire que, par exemple, mon répertoire de base,c'est... D'ailleurs, pourquoi j'ai mis des parenthèses ?
00:38:42 :Donc, c'est download.Le premier répertoire que je veux supprimer, par exemple,ça va être download image.Après, je peux le réassigner, puis je veux supprimer le vidéo, par exemple.
00:38:54 :Là, ça ne me dérange pas.Parce que moi, avec mon extension de coloration VS Code,tu vois que ce n'est pas la même couleur.Donc moi, je vois tout de suite, en tant que développeur,cette couleur-là, je ne dois pas y toucher.
00:39:09 :Ok ?Pour le coup, c'est juste un coup de main à prendre.Une fois que tu auras développé un peu, que tu auras compris,tu verras que ça ira tout seul.
00:39:21 :C'est moi, en fait.Je te donne le type, c'est des majuscules.Tout le monde ne connaît pas ça.En vrai, avec une extension de coloration, par exemple, comme moi,ça peut t'aider à t'y retrouver.
00:39:36 :Comme ça, si tu sais que tu as des variables que tu ne veux pas modifier,on appelle ça des constantes, tu les mets en majuscules,tu sais où elles sont et tu ne les modifies pas.
00:39:45 :Et tout ce qui est en minuscules, tu pars du principe que ça peut être modifié comme tu veux.Que ce soit dans des boucles ou ailleurs.
00:39:51 :Est-ce qu'il y a d'autres questions ?Le mantra sera évidemment disponible en rediffusion pour ceux qui veulent.Pour moi, c'était juste pour la fonction lui-même au niveau des fichiers.
00:40:16 :Oui.Mais quand tu ne connais pas bien Python,c'est comme si tu renommais le fichier en fichier type.Pour moi, c'est plus pratique d'utiliser copy ou move.
00:40:32 :En fait, comme j'ai expliqué tout à l'heure,c'est un peu pris de Linux et la fonction move de Linuxqui sert elle aussi à renommer des fichiers.
00:40:47 :En fait, sur Linux, on utilise move pour renommer.Là, c'est rename, vois-le comme dans le sens de réécriture.En fait, on va réécrire le fichier à un autre endroit.
00:40:58 :Que ce soit pour le renommer ou que ce soit pour le déplacer.Il faut le comprendre, rename dans le sens de réécriture.Tu réécris le fichier d'un point A à un point B,que ce soit le même endroit et tu changes son nom,ou que ce soit un autre endroit parce que tu veux le déplacer.
00:41:13 :Ce sera peut-être plus clair que réécrire.C'est vraiment dans le sens de réécriture et pas de renommer, si tu préfères.C'est vrai que le nom n'est pas forcément très explicite,mais vois-le dans le sens de réécriture.
00:41:27 :Est-ce qu'il y a d'autres questions ?Attendons voir s'il n'y en a pas.Je prends deux petites minutes de votre temps.On ne voit pas tout le code de ton...
00:41:48 :Qu'est-ce que ça s'appelle de ton fichier ?Il pense à envoyer la deuxième partie, si tu veux.Le nom du fichier au sens de Full Name Passest dans ce cas-là renommé le Full Name Pass.
00:42:03 :Oui.C'est pour ça que tout à l'heure j'avais mis Absolue au départ.Mais j'avais peur que ce ne soit pas assez clair, je l'ai enlevé.
00:42:17 :Et oui, c'est peut-être plus clair au final,que de réécrire le nom d'accès, donc le Full Name Pass.Moi j'ai écrit en français, mais j'avoue que ça aurait été peut-être plus clairavec comme ça en anglais.
00:42:31 :Ok, du coup je prends deux petites minutes de votre temps.J'en ai parlé cet après-midi à Thibault.Je voulais faire revenir les projets mensuels sur Docstring.
00:42:42 :Peut-être que vous ne l'avez pas tous connu, notamment pour les étudiants récents.Mais sur Docstring, il y a eu un temps bien lointain,fin d'année dernière, début d'année, le dernier je crois.
00:42:53 :Il y avait des projets mensuels, qui en fait sont des projetsqui sont disponibles sur le site.Où vous avez un cahier des charges qui vous est donné.
00:43:03 :Et vous avez un mois pour réaliser le cahier des chargesde la manière que vous voulez, avec les frameworks, tout ce que vous voulez.Il faut quand même respecter les conditions qui sont données.
00:43:12 :Par exemple, si on vous dit de ne pas utiliser tel ou tel truc,vous ne les utilisez pas.Voilà, vous pouvez choisir de participer.Vous avez un mois pour le faire.
00:43:21 :Et à la fin, c'est le but.Tous les étudiants ont un mois pour le faire.Et à la fin, c'est le but.Tous les étudiants partagent leur code, leur solution.
00:43:29 :Et qu'on puisse, chacun puisse aller voir le code de chacun.Chacun met sa petite explication.Là par exemple, sur les anciens.Là par exemple, Gabriel a fait une petite vidéo YouTube.
00:43:41 :Ce qu'on s'appelle ici, Ludo, il a mis une petite image.Il y a le dépôt git et le site web.C'est quelque chose qu'il n'y a pas eu depuis un moment.
00:43:50 :Que je voulais faire revenir.Je suis en train de bosser sur quelque chosequi servira aussi pas mal aux étudiants Tosa.Ça va être un projet qui va reprendre pas mal d'aspects.
00:44:00 :Ça vous fera des révisions pour l'évaluation Tosa.Parce qu'il y aura notamment de la progression orientée objet,avec de l'héritage, de la séparation des responsabilités,des principes solides.
00:44:10 :Je vais aussi intégrer de l'optimisation de code.Je vais vous demander que le code soit optimisé.Et il y aura des métriques afin de voir la différenceentre un code pas optimisé et optimisé.
00:44:22 :Je suis en train de réfléchir un petit peu à tout ça.Je pense que j'en reparlerai plus la semaine prochaine.Mais c'était pour vous tenir au courant que ça va revenir.
00:44:31 :Je suis en train de bosser dessus là.Ça ne devrait pas tarder dans les semaines à venir.J'espère que ça vous plaira.On va conclure tranquillement.
00:44:44 :Il n'y a pas de dernière question de dernière minute ?Il n'y a pas de question de dernière minute ?Tu peux envoyer un message sur Discord aussi,à Kevin dans les modérateurs, sur Discord, si tu veux le code.
00:45:13 :Ok, écoutez, merci d'être venu.Au plaisir, à la semaine prochaine.Normalement, ce sera mardi.La semaine prochaine, je fais mardi.Je n'ai pas encore dit l'heure, mais ça doit être 19h20.
Aucune occurrence trouvée pour « ».
00:04:03
Projet du trieur de fichier
00:34:46
Question de Nahir sur la ré-assignation des variables