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.