IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

probleme calcul taille dossiers


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Par défaut probleme calcul taille dossiers
    Bonjour a tous,

    je compte ecrire un petit script pour faire du monitoring sur des disques. Ca commence plutot mal ( je debute ):

    1- je cherche a faire une simple boucle sur un repertoire pour calculer la taille de tous les sous repertoires (sur un seul niveau)
    ==> mon probleme: en comparant avec un du -s je m'apercoi que certaines tailles sont fausses...

    voici le "code":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    import os.path, sys
    path = sys.argv[1]
    listDir =  os.walk(path).next()[1]
     
    for i in listDir:
         fullpath = path + '/' + i
         size = 0.0
         for root, dirs, files in os.walk(fullpath):
              for fichiers in files:
                   size += os.path.getsize(os.path.join(root,fichiers))
         print size / (1024*1024)
    ==> j'imagine qu'il y a une erreure dans ma boucle mais j'ai beau chercher je ne trouve pas.

    Quelqu'un aurait il une idee?

    Merci d'avance!

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Ceci existe dans le module shutil: https://docs.python.org/3/library/sh...til.disk_usage


    EDIT: Je vois que disk_usage retourne l'usage du disque entier.

    Pour ton code, ceci devrait suffire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import os.path, sys
    path = sys.argv[1]
     
    size = 0.0
    for root, dirs, files in os.walk(path):
        for file_ in files:
            print(file_)
            size += os.path.getsize(os.path.join(root,file_))
    print(size)
    Au passage, os.walk.next() retourne une erreur.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Par défaut
    Salut,


    Dans le code que tu me proposes je recupere la taille du repertoire de "path" ; ce que je cherchais a faire c'etait recuperer la taille de chacun des repertoires de "path", d'ou la boucle "for i in listDir".

    Je vais essayer avec le modul shutil, merci beaucoup pour les conseils!

    Cdt,

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wilfried85 Voir le message
    Dans le code que tu me proposes je recupere la taille du repertoire de "path" ; ce que je cherchais a faire c'etait recuperer la taille de chacun des repertoires de "path", d'ou la boucle "for i in listDir".
    Bonjour

    Son traitement est plus modulaire donc plus universel. Ce qui ne t'empêche pas de le récupérer pour l'appliquer sur chacun des répertoires de "path"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    En essayant d'être assez solide, j'arrive à un code assez correct dans sa compréhension,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    import os
    import sys
     
    def get_size_directory(directory):
        size = 0
        files = os.listdir(directory) # liste de tous fichiers, répertoires, ...
        path = None # Dans le cas où files est vide
        for f in files:
            path = os.path.join(directory, f) # Joint répertoire et fichier pour chemin absolu
            if not os.path.isdir(path): # Si pas un répertoire, on peut ajouter taille du fichier
                try:
                    size += os.path.getsize(path)
                except OSError: # fichier non accessible (des fois même avec les droits)
                    print("chemin inaccessible: {}".format(path))
            else: # Sinon on refait le taf pour le répertoire
                get_size_directory(path)
        if path: # Si files non vide
            res[directory] = size
     
    res = {}
    arg = sys.argv[1] # On prend le 1er argument après le fichier lors de l'exécution
    if not os.path.isdir(arg):
        sys.exit("{} n'est pas un répertoire !".format(arg))
    get_size_directory(arg) # Enregistrement des résultats dans res
    for directory in res:
        print("{}: {}".format(directory, res[directory]))

Discussions similaires

  1. Calcul taille de dossier > 20 Go
    Par seb-65 dans le forum Langage
    Réponses: 14
    Dernier message: 05/07/2012, 09h35
  2. [LG] Problème calcul de trinome
    Par shinryu666 dans le forum Langage
    Réponses: 3
    Dernier message: 24/09/2005, 09h38
  3. Problème de taille avec les tables
    Par Angelico dans le forum Paradox
    Réponses: 2
    Dernier message: 27/12/2004, 18h38
  4. probleme de taille de title bar
    Par Daniel Spring dans le forum C++Builder
    Réponses: 1
    Dernier message: 15/11/2004, 17h26
  5. [Memo] Probleme de taille...
    Par NoisetteProd dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/08/2003, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo