- 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 personlive_helpToutes les questions
jms
21 septembre 2023 - 21 septembre 2023 à 16:50
checkConversation résolue
1 réponse
Erreur avec p.touch()
Bonjour Thibault, Je n'arrive pas à lire ou écrire sur un fichier. J'ai exécuté parfaitement le programme du cours à la lettre, et je suis toujours en erreur pourquoi? (je …
00:00:00 :Dans cette vidéo, on va voir comment récupérer tous les dossiers et les fichiers à l'intérieurd'un dossier également de façon récursive avec PathLib. Donc je vais importer depuis PathLib
00:00:09 :la classe Path et on va donc déjà regarder la méthode iterdir qui me permet de récupérer tousles fichiers et les dossiers à l'intérieur d'un dossier. Donc je vais utiliser là encore le
00:00:19 :path.home en exemple et on va utiliser tout simplement iterdir à l'intérieur de ce dossierutilisateur. Donc je valide avec entrée, vous voyez que là ça nous retourne un objet de type
00:00:29 :générateur. Donc un générateur c'est tout simplement un objet sur lequel on peut itérer,donc je vais dire pour f in path.home.iterdir et là on va afficher par exemple f.name puisque f
00:00:40 :ici ça va être un objet de type path donc un objet comme celui-ci et on va pouvoir donc utiliser parexemple .name pour n'afficher que le nom du dossier ou du fichier et non pas le chemin au complet. Je
00:00:50 :pourrais bien entendu afficher directement le chemin complet avec f mais dans ce cas-ci jene veux afficher que le nom. Donc je valide avec ok et là vous voyez qu'on a tous les fichiers et les
00:00:58 :dossiers et même les dossiers cachés à l'intérieur de mon dossier utilisateur. Donc ça c'est lapremière façon de faire avec iterdir, on peut tout simplement itérer sur tout ce qui est àl'intérieur de notre dossier. On peut ainsi par exemple très rapidement récupérer tous les
00:01:12 :dossiers en utilisant également isdir qui me permet de vérifier si un chemin correspond àun dossier ou un fichier. Donc par exemple avec une compréhension de liste on pourrait dire f for
00:01:22 :finpath.home.iterdir if f.isdir tout simplement. Donc on récupère les fichiers pour tous lesfichiers dans path.home.iterdir si le chemin donc qui est représenté par f ici est un dossier. Donc
00:01:36 :je valide avec ok et là vous voyez que je récupère toute une liste de chemins qui correspondent à desdossiers. Je pourrais faire pareil avec les fichiers donc ici en spécifiant file et là j'aurai
00:01:47 :uniquement les fichiers qui seraient répertoriés. On peut utiliser également d'autres méthodes quisont très pratiques, les méthodes glob et rglob. Donc la seule différence entre les deux c'est que
00:01:58 :rglob va agir de façon récursive donc c'est très pratique. Vous allez voir que ça ressemble beaucoupà ce qu'on peut faire avec le module glob sauf que là encore on peut le faire directement surun objet path. Donc là je vais le faire avec mon dossier downloads donc je vais recréer un nouveau
00:02:12 :chemin qui va être égal à p dans lequel je vais concatener donc downloads. Donc là il me ditque p n'est pas défini c'est normal puisque je ne l'ai pas créé donc je vais recréer tout simplementune variable puisque je n'avais pas créé de variable p auparavant. Donc p égale path.home
00:02:26 :slash download ça me permet de récupérer mon dossier download et à l'intérieur de ce dossierje vais donc utiliser glob pour récupérer certains types de fichiers par exemple tous les fichiers pngà l'intérieur de mon dossier download. Donc avec glob ici ça ne sera pas récursif ça va uniquement
00:02:41 :chercher au premier niveau donc je valide avec ok. Là on va encore avoir un générateur donc si jeveux afficher tous les éléments je peux faire pour f in p.glob et je vais ici afficher tous les
00:02:52 :fichiers png et je vais afficher là encore f.name pour ne pas trop surcharger le output duterminal. Je valide et là dans ce cas ci vous voyez que je n'ai rien à l'intérieur de mon dossier
00:03:02 :utilisateur ce qui me paraît un peu bizarre et je sais pourquoi c'est parce que j'ai oublié toutsimplement le s à downloads. Donc on va refaire notre chemin on va mettre downloads avec un s
00:03:12 :cette fois ci pour bien cibler le dossier de téléchargement et je vais refaire donc ma boucleici je valide et là cette fois ci vous voyez que j'ai bien toutes les images png qui sont àl'intérieur de mon dossier de téléchargement. Si je fais à la place de glob r.glob là cette fois
00:03:25 :ci on va agir de façon récursive donc on va également chercher à l'intérieur des dossierset des sous dossiers dans mon dossier de téléchargement et si je valide là vous voyez qu'ona encore plus de fichiers qui sont affichés. Donc glob et r.glob c'est vraiment très pratique très
00:03:39 :facile à utiliser vous spécifiez le pattern que vous voulez matcher donc dans ce cas-ci tous lesfichiers png on pourrait faire la même chose avec des fichiers texte ou autre chose. On a également
00:03:47 :interdire qui nous permet de récupérer tout ce qu'il y a à l'intérieur d'un dossier et ensuiteon peut filtrer par exemple avec isdir ou isfile comme on l'a vu pour récupérer uniquement certainstypes de fichiers. Donc vraiment vous voyez que ça nous évite de passer par tout ce qu'on a
00:04:00 :généralement comme la méthode walk qui si vous l'avez déjà utilisé est assez pénible à utiliseravec le module os je ne me souvenais personnellement jamais de la syntaxe à utiliser et du coup je meretrouve toujours personnellement quand je dois utiliser le module os à aller copier des bouts
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.