Lister repertoires

xzonz Messages postés 107 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022 - Modifié le 25 nov. 2022 à 09:17
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 - 23 nov. 2022 à 19:24

Bonjour  a toutes et tous,

je suis débutant en python , voici ma question

j'ai la structure de répertoires suivante:

dossier-A
              dossier-B
                             dossier-C
                                            fichier1
                                            fichier2
                                            fichier3

                             dossier-C1
                                            fichier1
                                            fichier2
                                            fichier3

dossier-A1

 ..... et ainsi de suite

j'aimerais pour générer un fichier texte qui liste de la manière suivante:

nom du dossier-A

nom du dossier-B

nombre de fichiers dans le dossier-C

exclure de la liste le dossier-C1 (qui porte toujours le même nom)

pour le moment j'en suis a la liste de premier niveau dossier-A

j'arrive a lister le premier niveau

import os
path = "C:/TEST"
obj = os.scandir()
 for entry in obj:
    if entry.is_dir():
       print(entry.name)

mais je ne connais pas la manière pour boucler sur les sous répertoires

en affichant le compte du nombre de fichiers pour le dernier niveau

en vous remerciant de votre aide !

1 réponse

lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 73
23 nov. 2022 à 19:24

Bonsoir,

Pour boucler sur les sous répertoires avec l'instruction os.scandir() il faudrait utiliser un appel récursif de procédure.

Je vous propose une instruction plus simple à utiliser il s'agit de os.walk()

# -*- coding: UTF8 -*-
import os

repertoire = "D:\Vidéos"
cpt_fichier = 0
cpt_dossier = 0

for racine, dossiers, fichiers in os.walk(repertoire, topdown=True):
    print("\n", racine)
    print("\tNombre de dossiers", len(dossiers))

    for dossier in dossiers:
        cpt_dossier += 1
        print("\tDossier", dossier)

    print("\tNombre de fichiers", len(fichiers))

    for fichier in fichiers:
        cpt_fichier += 1
        print("\tFichier", fichier)

print ("nombre de fichiers =", cpt_fichier)
print ("nombre de dossiers =", cpt_dossier)






0