Partage
  • Partager sur Facebook
  • Partager sur Twitter

Projet TreeSizeClass

Projet basé sur la gestion des chemins/dossiers/fichiers sous linux

Sujet résolu
    26 octobre 2021 à 20:41:14

    Je souhaiterais réaliser un projet sur le principe de la commande "du -sh" sur Linux en me basant sur la création d'une classe.

    Ce projet permettra d'afficher un plot ( de préférence un camembert) par niveau de récursion dans l'arborescence Linux.

    Voici le début de code que je vous mets à disposition, ce début de code permet d'afficher les répertoires présents à un niveau n.

    Il ne reste plus qu'à récupérer les tailles de ces répertoires et de les afficher sous forme de plot (1 par niveau). En vous remerciant d'avance pour toutes suggestions ou conseils qui me permettrait d'avancer sur ce projet =)

    import os
    import matplotlib.pyplot as plt
    
    LEVEL_TREE = 3
    
    class RecursiveDirLister:
        
        def __init__(self, root, level=0):
            self.root = root
            self.level = level
            self.subpaths = self._set_childrens_()
            '''self.plot = self._define_plots_()'''
            
        
        def __repr__(self): 
            rep = str(self.level) + ': ' + self.root + "\n"
            for child in self.subpaths : rep += child.__repr__()
            return rep
           
    
            
        def _set_childrens_(self):
            if self.level >= LEVEL_TREE : return []
            childrens = []
            for dd in os.listdir(self.root):
                path = os.path.join(self.root, dd)
                if not os.path.isdir(path): continue
                child = RecursiveDirLister(path, self.level + 1)
                childrens.append(child)
                    
            return childrens
    
        
        '''def _define_plots_(self):
            
            return pie'''
    
    
    def main():
        tree = RecursiveDirLister(os.getcwd()) 
        print(tree)
    main()   
    
    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2021 à 12:07:04

      suite : 
      def _get_dir_size_(self):
            total_size = 0
            for dirpath, dirnames, filenames in os.walk(self.root):
               for f in filenames:
                  fp = os.path.join(dirpath, f)
                  total_size += os.path.getsize(fp)
                  #print(total_size)
            return total_size

      Ce qui me permet d'avoir le résultat suivant : 

      -
      Edité par MatthieuROY5 27 octobre 2021 à 12:09:49

      • Partager sur Facebook
      • Partager sur Twitter

      Projet TreeSizeClass

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown