Petit script pour connaitre la taille d'un dossier en python

Publié le 21 octobre 2008 par Mikebrant

Tout est dans le titre.
Un billet très court .

À mon stage, on avait besoin  de connaitre la taille d'un dossier.
Voici le script :

 #-*- coding:Utf-8 -*-
import sys
import os
def calcul( dossier):
  taille = 0
  for (courant, sousDossiers, fichiers) in os.walk(dossier):
       taille = taille + sum( os.path.getsize( os.path.join(courant, fichier) ) for fichier in fichiers )
  return str( taille/(1024*1024) )
if __name__ =='__main__':
   
  if len(sys.argv) ==1 :#si on n'a pas passé d'arguments, alors on dégage
     print("Il faut mettre un utilisateur en argument")
     exit(0)
  print calcul(sys.argv[1]) + "Mo"

J'explique vite-fait bien-fait :

os.walk() : retourne un générateur.
À chaque itération, il va rentrer dans un sous-dossier de dossier et le lister.  
Il
retourne un tuple contenant :  
le sous-dossier qu'il a listé : courant
la liste de ses sous-dossiers : sousDossiers
la liste des fichiers présents : fichiers


sum( os.path.getsize( os.path.join(courant, fichier) ) for fichierin fichiers ) : c'est un generator expression (cf mon article ) .
Pour chaque fichier présent dans fichiers,
on va calculer sa taille via  os.path.getsize().
getsize() prend le nom complet du fichier .

Le nom complet d'un fichier c'est son nom  : qui-saura.mkv + le chemin où il se trouve : /home/ . Ce qui nous donne : /home/qui-saura.mkv

C'est pour ça qu'on utlise join() :
il va prendre le chemin, le nom du fichier, et va les coller pour faire le chemin complet .

Voilà, à bientôt.