- 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 des dossiers, comment créer des fichiers etégalement comment supprimer ces dossiers et ces fichiers. Donc je vais importer depuis
00:00:08 :PathLib ma classe Path et je vais déjà récupérer un chemin qui va pointer vers mon dossierd'utilisateur. Donc dans ce cas-ci, on est sur slash user slash tbash. Je vais ensuite concaténer
00:00:19 :ce chemin avec un chemin de dossier que je vais appeler dossier test tout simplement. Donc pourça, je vais dire que p est égal à p slash dossier test. Donc là, j'ai une nouvelle variable p qui
00:00:30 :est égale cette fois-ci à un dossier test qui est à l'intérieur de mon dossier utilisateur qui pourl'instant n'existe pas encore. Si je fais un ls ici, on voit que je n'ai pas de dossier test dans
00:00:39 :mon dossier utilisateur. Donc ce que je vais pouvoir faire, c'est créer ce dossier avec mkdir. Donccomme mkdir qu'on a sur le module OS, sauf que cette fois-ci, on va l'utiliser directement surl'instance de notre objet Path. Donc je valide avec ok et là si je refais un ls, on voit que
00:00:55 :j'ai bien dossier test qui existe cette fois à l'intérieur de mon dossier utilisateur. Attention,mkdir ne va pas fonctionner si le dossier existe déjà. Donc si je fais entrer une nouvelle fois,
00:01:06 :là vous voyez qu'on a une erreur qui nous indique que le chemin existe déjà. Donc heureusement,on peut pallier à ça en utilisant un argument qui est l'argument existe ok que vous retrouvezlà encore dans le module OS. Donc existe ok qui ne va pas retourner d'erreur dans le cas où le
00:01:21 :dossier existe déjà. Donc je valide avec entrer et là vous voyez que je n'ai pas d'erreur. Doncle dossier existait déjà, donc il ne l'a pas recréé, il n'a pas écrasé notre dossier. Mais là
00:01:30 :l'avantage c'est que cette fois-ci, il n'a donc pas retourné d'erreur. On va avoir également unautre paramètre ici qui est très intéressant, c'est quand vous voulez créer des hiérarchiesde dossiers. Donc imaginons qu'à l'intérieur de dossier test, donc je vais aller dans dossier
00:01:42 :test, je souhaite créer une hiérarchie par exemple 1, 2 et 3. Donc trois dossiers comme ça lesuns dans les autres. Si j'utilise mkdir, de base ça ne fonctionnera pas. Donc je vais déjà créer
00:01:52 :mon dossier avec là encore les slashs qui sont très pratiques pour faire de la concaténation.Donc on va concaténer 1, 2 et 3 et on va remettre tout ça dans un objet p. Donc là si j'affiche p,
00:02:03 :j'ai bien mon dossier test avec 1, 2, 3. Donc si actuellement je fais mkdir et que je valideavec ok, vous voyez que là encore ça ne fonctionne pas puisque le fichier parents, donc le dossierdans ce cas-ci 2, n'existe pas. Donc c'est ce qu'il me dit ici, file not found error, no such
00:02:19 :file or directory. Donc ce qu'on va faire à la place c'est préciser parents égale true. Donc çac'est le deuxième paramètre très utile dans cette méthode qui me permet de quand même créer toutela structure du dossier même si les dossiers parents n'existent pas. Donc je valide avec ok
00:02:34 :et là si je fais 1ls, j'ai bien cette fois-ci le dossier 1. Si je me déplace à l'intérieur dudossier 1, j'ai bien le dossier 2 et ainsi de suite avec le dossier 3. Donc voilà là on est bien rendu
00:02:44 :à l'intérieur de dossier test 1, 2, 3. Maintenant si je souhaite créer un fichier à l'intérieur dece dossier, donc je vais créer tout simplement déjà un fichier avec là encore la concaténation,je vais l'appeler readme.txt. Je peux donc utiliser mon nouveau chemin donc qui pointe vers le fichier
00:03:00 :readme.txt dans le dossier 1, 2, 3. Donc ce fichier qui n'existe pour l'instant pas à l'intérieur demon dossier. Si je fais 1ls, là je n'ai rien à l'intérieur de ce dossier et donc je vais pouvoir
00:03:10 :faire p.touch et touch ça va me permettre de créer ce fichier. Donc je fais 1ls et là j'aibien le fichier readme qui est à l'intérieur de mon dossier 1, 2, 3. Si je veux ensuite supprimer
00:03:22 :ce fichier, je peux faire cette fois-ci unlink, je valide et là si je refais 1ls vous voyez quele fichier n'est plus à l'intérieur de mon dossier. Donc touch pour créer le fichier c'est la même
00:03:32 :chose que ce qu'on a à l'intérieur du terminal. A l'intérieur de mac os ou de linux quand vousvoulez créer un fichier vous allez utiliser cette commande touch. Donc pensez à ça c'est vraiment la
00:03:41 :même chose dans le cas de cette librairie avec python. Touch pour créer un fichier et unlinkcette fois-ci qui nous permet de supprimer un fichier. Maintenant pour supprimer un dossier
00:03:51 :c'est un petit peu plus complexe. On va pouvoir supprimer un dossier s'il ne contient rien. Donclà je vais créer un dossier qui va être égal au dossier parent. Donc là dans ce cas-ci on va
00:03:59 :remonter d'un niveau donc comme le p ici est égal au fichier readme, en faisant un p égal p.parenton remonte d'un niveau donc au niveau du dossier 3 et si je veux supprimer ce dossier je peux fairep.rmdir tout simplement. Et là comme ce dossier donc le dossier 3 ne contenait rien il a été
00:04:16 :supprimé. Donc si je remonte d'un niveau dans le dossier 2 et que je fais 1ls vous voyez que ledossier 3 n'existe plus. Par contre si j'essaie de remonter au niveau du dossier test donc si je
00:04:25 :fais p.parent.parent.parent là j'affiche p donc j'ai bien ici le dossier test. Imaginons que jesouhaite supprimer ce dossier là ça ne va pas marcher. Donc si je fais p.rmdir que je valide
00:04:38 :vous voyez qu'on a une erreur puisqu'il nous dit que le dossier qu'on essaye de supprimer n'est pasvide et c'est normal puisqu'il contient le dossier 1 qui contient le dossier 2. Donc je ne peux pas
00:04:46 :supprimer le dossier avec rmdir et c'est vraiment le seul cas de figure avec patlib dans lequel vousallez devoir passer par shutil. Donc on va importer shutil et on va faire shutil.rmtree qui
00:04:57 :est une méthode qui nous permet de supprimer une hiérarchie de dossiers même s'ils ne sont pasvides. Donc j'utilise rmtree et je vais spécifier dans ce cas-ci la variable p qui correspond à mon
00:05:07 :chemin donc avec la librairie patlib. Donc vous n'avez pas besoin de le convertir en chaîne decaractère il va être compris automatiquement même si vous ne le convertissez pas. Donc je
00:05:15 :valide en appuyant sur entrée. Là vous voyez que cette fois-ci on n'a pas d'erreur et si je reviensau niveau de mon dossier utilisateur et que je fais un ls on voit bien que dossier test n'estplus présent et qu'il a bien été supprimé. Donc voilà c'est vraiment le seul cas de figure dans
00:05:28 :lequel vous allez devoir repasser par shutil pour supprimer cette structure. Vous ne pouvez pas lefaire directement avec rmdir si votre dossier contient des dossiers ou des fichiers. Donc voilà
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.