2017-10-19 28 views
0

Je travaille avec un grand répertoire (projet) qui a divisé en 3 sous-dossiers (a, LYR, out) et ils partagèrent en sous-sous-dossiers avec beaucoup de fichiers à l'intérieur les:Comment obtenir la taille de chaque sous-dossier en utilisant Python?

enter image description here

enter image description here

J'essaie d'obtenir la taille de ces 3 sous-dossiers - chaque sous-dossier séparément. Quand je en utilisant ce code (i red Calculating a directory size using Python?):

import os 

def get_size(start_path = "."): 
    total_size = 0 
    for dirpath, dirnames, filenames in os.walk(start_path): 
     for f in filenames: 
      fp = os.path.join(dirpath, f) 
      total_size += os.path.getsize(fp) 
    return total_size 
path = r"G:\desktop\Project" 
dirList = os.listdir(path) 
for fname in dirList: 
    print fname 
    print get_size(path) 

je reçois:

>>> 
a 
41730716 
lyr 
41730716 
out 
41730716 
>>> 

Je ne comprends pas ce qui est mon erreur.

41730716 est la taille de tous les "Project" répertoire, et ce n'est pas ce que je veux. J'ai besoin de la taille des sous-dossiers: a, lyr, out chacun. En fait, la taille du sous-dossier a est de 23,4 Mo, lyr est de 12 Mo, et est de 4 Mo - ces valeurs que j'ai besoin d'obtenir dans le résultat.

I rouge: en Calculating size folder python. Dans cette question, j'ai seulement la taille du répertoire, y compris la taille de tous les sous-dossiers - ce n'est pas ce dont j'ai besoin.

Répondre

0

enfin, je l'ai utilisé ce code:

import os 
def get_size(start_path = "."): 
    total_size = 0 
    for dirpath, dirnames, filenames in os.walk(start_path): 
     for f in filenames: 
      fp = os.path.join(dirpath, f) 
      total_size += os.path.getsize(fp) 
    return "Folder = %0.1f MB" % (total_size/(1024*1024.0)) 
os.chdir(r"G:\desktop\Project") 
all_subdirs = [ d for d in os.listdir('.') if os.path.isdir(d)] 
for dirs in all_subdirs: 
    dir = os.path.join(r"G:\desktop\Project", dirs) 
    os.chdir(dir) 
    current = os.getcwd() 
    print current 
    print get_size(current)