Le module shutil fournit la fonction shutil.disk_usage() permettant de connaître facilement l'espace disque total, l'espace utilisé et l'espace disponible d'un disque ou du système de fichiers contenant un chemin donné. Cette fonction est particulièrement utile pour surveiller l'espace de stockage avant une sauvegarde, un téléchargement ou la création de fichiers volumineux.
1. À propos de shutil.disk_usage()
La fonction shutil.disk_usage() appartient au module shutil de la bibliothèque standard de Python. Il n'est donc pas nécessaire d'installer un package supplémentaire avec pip.
Cette fonction permet d'obtenir des informations sur l'utilisation de l'espace disque associé à un chemin donné. Pour commencer, nous devons simplement importer le module shutil.
1 2 | import shutil print("Module shutil chargé") |
Sortie :
1 | Module shutil chargé |
Syntaxe de disk_usage()
La fonction disk_usage() reçoit le chemin d'un fichier ou d'un dossier situé sur le système de fichiers que nous souhaitons analyser.
1 | shutil.disk_usage("C:/") |
Sortie possible :
1 | usage(total=512105932800, used=287450521600, free=224655411200) |
Les valeurs affichées dépendent naturellement de l'ordinateur utilisé. Elles sont exprimées en octets.
Les trois informations retournées
shutil.disk_usage() retourne trois valeurs importantes : total correspond à la capacité totale, used à l'espace utilisé et free à l'espace encore disponible.
2. Obtenir l'espace disque total, utilisé et disponible
Les informations retournées par disk_usage() peuvent être récupérées directement dans trois variables grâce à l'affectation multiple de Python.
L'exemple suivant analyse le disque C: sous Windows et récupère séparément sa capacité totale, son espace utilisé et son espace libre.
1 2 3 4 5 | import shutil total, utilise, libre = shutil.disk_usage("C:/") print("Total :", total) print("Utilisé :", utilise) print("Libre :", libre) |
Sortie possible :
1 2 3 | Total : 512105932800 Utilisé : 287450521600 Libre : 224655411200 |
Les valeurs obtenues sont exprimées en octets. Elles peuvent donc être très grandes et difficiles à lire directement.
Utiliser les attributs total, used et free
Nous pouvons également conserver le résultat de disk_usage() dans une variable puis accéder aux propriétés total, used et free.
1 2 3 4 5 | import shutil disque = shutil.disk_usage("C:/") print("Total :", disque.total) print("Utilisé :", disque.used) print("Libre :", disque.free) |
Sortie possible :
1 2 3 | Total : 512105932800 Utilisé : 287450521600 Libre : 224655411200 |
Cette écriture peut rendre le programme plus lisible lorsque les différentes informations sont utilisées à plusieurs endroits.
3. Convertir les octets en Mo et en Go
Comme disk_usage() retourne les valeurs en octets, il est souvent préférable de les convertir en mégaoctets ou en gigaoctets pour faciliter leur lecture.
Convertir les octets en mégaoctets
Pour obtenir une valeur en Mo selon une conversion binaire courante, nous pouvons diviser le nombre d'octets par 1024².
1 2 3 4 5 | import shutil total, utilise, libre = shutil.disk_usage("C:/") print("Total :", round(total / 1024**2, 2), "Mo") print("Utilisé :", round(utilise / 1024**2, 2), "Mo") print("Libre :", round(libre / 1024**2, 2), "Mo") |
Sortie possible :
1 2 3 | Total : 488382.27 Mo Utilisé : 274134.18 Mo Libre : 214248.09 Mo |
La fonction round() permet ici de limiter l'affichage à deux chiffres après la virgule.
Convertir les octets en gigaoctets
Pour obtenir des valeurs plus faciles à lire sur les disques modernes, nous pouvons effectuer une conversion en Go en divisant le nombre d'octets par 1024³.
1 2 3 4 5 | import shutil total, utilise, libre = shutil.disk_usage("C:/") print("Total :", round(total / 1024**3, 2), "Go") print("Utilisé :", round(utilise / 1024**3, 2), "Go") print("Libre :", round(libre / 1024**3, 2), "Go") |
Sortie possible :
1 2 3 | Total : 476.94 Go Utilisé : 267.71 Go Libre : 209.23 Go |
Cette présentation est généralement beaucoup plus compréhensible que l'affichage direct du nombre d'octets.
Créer une fonction de conversion
Lorsque plusieurs valeurs doivent être converties, nous pouvons créer une fonction octets_vers_go() afin d'éviter de répéter le même calcul.
1 2 3 4 5 6 7 | import shutil def octets_vers_go(valeur): return round(valeur / 1024**3, 2) total, utilise, libre = shutil.disk_usage("C:/") print("Total :", octets_vers_go(total), "Go") print("Utilisé :", octets_vers_go(utilise), "Go") print("Libre :", octets_vers_go(libre), "Go") |
Sortie possible :
1 2 3 | Total : 476.94 Go Utilisé : 267.71 Go Libre : 209.23 Go |
Cette fonction peut ensuite être réutilisée chaque fois que nous devons convertir une taille exprimée en octets.
4. Calculer le pourcentage d'espace disque utilisé
Les valeurs fournies par shutil.disk_usage() permettent également de calculer le pourcentage d'espace utilisé. Il suffit de diviser l'espace utilisé par la capacité totale puis de multiplier le résultat par 100.
1 2 3 4 | import shutil total, utilise, libre = shutil.disk_usage("C:/") pourcentage = utilise / total * 100 print("Espace utilisé :", round(pourcentage, 2), "%") |
Sortie possible :
1 | Espace utilisé : 56.13 % |
Ce pourcentage permet de connaître rapidement le niveau d'occupation du disque.
Calculer le pourcentage d'espace libre
De la même manière, nous pouvons calculer le pourcentage d'espace disponible en divisant la valeur free par la capacité totale.
1 2 3 4 | import shutil total, utilise, libre = shutil.disk_usage("C:/") pourcentage_libre = libre / total * 100 print("Espace libre :", round(pourcentage_libre, 2), "%") |
Sortie possible :
1 | Espace libre : 43.87 % |
Cette information peut servir à déclencher une alerte lorsque l'espace disponible devient trop faible.
Afficher un petit rapport sur le disque
Nous pouvons combiner les différentes informations afin de produire un rapport simple sur l'état du disque.
1 2 3 4 5 6 7 | import shutil total, utilise, libre = shutil.disk_usage("C:/") go = 1024**3 print("Capacité :", round(total / go, 2), "Go") print("Utilisé :", round(utilise / go, 2), "Go") print("Disponible :", round(libre / go, 2), "Go") print("Occupation :", round(utilise / total * 100, 2), "%") |
Sortie possible :
1 2 3 4 | Capacité : 476.94 Go Utilisé : 267.71 Go Disponible : 209.23 Go Occupation : 56.13 % |
Quelques lignes de Python suffisent ainsi pour obtenir un résumé facilement lisible de l'utilisation du disque.
5. Analyser un disque ou un chemin particulier
shutil.disk_usage() ne nécessite pas forcément d'indiquer directement la racine d'un disque. Nous pouvons fournir le chemin d'un dossier existant situé sur le système de fichiers que nous souhaitons analyser.
Analyser le disque contenant le dossier courant
Le chemin "." représente le dossier courant. Il permet donc d'obtenir les informations du système de fichiers sur lequel le programme est exécuté.
1 2 3 | import shutil total, utilise, libre = shutil.disk_usage(".") print("Espace disponible :", round(libre / 1024**3, 2), "Go") |
Sortie possible :
1 | Espace disponible : 209.23 Go |
Cette méthode est pratique lorsque nous voulons connaître l'espace disponible sans connaître à l'avance la lettre du disque utilisé.
Analyser un dossier particulier
Nous pouvons également fournir le chemin d'un dossier particulier. disk_usage() retourne alors les informations du système de fichiers contenant ce dossier, et non la taille du dossier lui-même.
1 2 3 | import shutil total, utilise, libre = shutil.disk_usage("C:/Users") print("Espace libre :", round(libre / 1024**3, 2), "Go") |
Sortie possible :
1 | Espace libre : 209.23 Go |
Il est important de comprendre que disk_usage() ne calcule pas l'espace occupé par C:/Users. Elle fournit les informations du disque ou de la partition sur laquelle ce dossier se trouve.
Analyser un autre disque sous Windows
Si l'ordinateur possède plusieurs disques ou partitions, nous pouvons préciser directement la lettre du disque que nous souhaitons analyser.
1 2 3 | import shutil total, utilise, libre = shutil.disk_usage("D:/") print("Espace libre sur D :", round(libre / 1024**3, 2), "Go") |
Sortie possible :
1 | Espace libre sur D : 325.48 Go |
La même technique peut être utilisée avec d'autres volumes accessibles au système.
6. Vérifier si l'espace disponible est suffisant
L'une des utilisations les plus intéressantes de shutil.disk_usage() consiste à vérifier automatiquement si l'espace disponible est suffisant avant une copie, une sauvegarde, une installation ou la création d'un fichier volumineux.
Vérifier qu'il reste au moins 10 Go
Dans l'exemple suivant, le programme vérifie si le disque possède au moins 10 Go disponibles.
1 2 3 4 5 6 7 | import shutil total, utilise, libre = shutil.disk_usage("C:/") libre_go = libre / 1024**3 if libre_go >= 10: print("Espace suffisant") else: print("Espace disque insuffisant") |
Sortie possible :
1 | Espace suffisant |
Cette vérification peut être effectuée avant de commencer une opération nécessitant beaucoup d'espace.
Afficher une alerte lorsque le disque est presque plein
Nous pouvons également surveiller le pourcentage d'occupation et afficher une alerte lorsque celui-ci dépasse une valeur déterminée, par exemple 90 %.
1 2 3 4 5 6 7 | import shutil total, utilise, libre = shutil.disk_usage("C:/") occupation = utilise / total * 100 if occupation >= 90: print("Attention : disque presque plein") else: print("Occupation normale :", round(occupation, 2), "%") |
Sortie possible :
1 | Occupation normale : 56.13 % |
Ce principe peut être intégré dans un outil de surveillance ou un script d'administration.
Vérifier l'espace avant une sauvegarde
Avant de créer une sauvegarde importante, nous pouvons comparer l'espace nécessaire à l'espace actuellement disponible sur le disque.
1 2 3 4 5 6 7 | import shutil espace_necessaire = 5 * 1024**3 total, utilise, libre = shutil.disk_usage(".") if libre >= espace_necessaire: print("La sauvegarde peut commencer") else: print("Espace insuffisant pour la sauvegarde") |
Sortie possible :
1 | La sauvegarde peut commencer |
Ici, le programme vérifie qu'au moins 5 Go sont disponibles avant d'autoriser la sauvegarde.
7. Exemple pratique et gestion des erreurs
Dans une application réelle, il est préférable de prévoir une gestion des erreurs, notamment lorsque le chemin fourni à disk_usage() n'existe pas ou n'est pas accessible.
Gérer un chemin inexistant
Nous pouvons utiliser un bloc try...except afin d'intercepter l'exception FileNotFoundError lorsqu'un chemin est introuvable.
1 2 3 4 5 6 | import shutil try: total, utilise, libre = shutil.disk_usage("Z:/") print("Espace libre :", round(libre / 1024**3, 2), "Go") except FileNotFoundError: print("Le chemin indiqué n'existe pas") |
Sortie possible :
1 | Le chemin indiqué n'existe pas |
Cette gestion évite que le programme s'arrête brutalement lorsqu'un disque ou un dossier demandé est absent.
Créer une fonction d'analyse du disque
Pour rendre notre programme réutilisable, nous pouvons créer une fonction espace_disque() qui reçoit un chemin et affiche automatiquement les principales informations sur son espace disque.
1 2 3 4 5 6 7 8 9 | import shutil def espace_disque(chemin): total, utilise, libre = shutil.disk_usage(chemin) go = 1024**3 print("Espace total :", round(total / go, 2), "Go") print("Espace utilisé :", round(utilise / go, 2), "Go") print("Espace libre :", round(libre / go, 2), "Go") print("Occupation :", round(utilise / total * 100, 2), "%") espace_disque("C:/") |
Sortie possible :
1 2 3 4 | Espace total : 476.94 Go Espace utilisé : 267.71 Go Espace libre : 209.23 Go Occupation : 56.13 % |
Cette fonction peut être appelée pour différents disques ou chemins afin d'obtenir rapidement un rapport sur l'espace disponible.
Points importants à retenir
shutil.disk_usage() retourne trois informations : total, used et free.
Les valeurs retournées sont exprimées en octets. Elles peuvent être converties en unités plus lisibles en divisant par 1024² ou 1024³ pour obtenir respectivement des valeurs binaires couramment affichées comme Mo et Go.
disk_usage() fournit les informations du système de fichiers contenant le chemin indiqué. Elle ne calcule pas la taille occupée par un dossier particulier.
La fonction est particulièrement utile pour vérifier l'espace disponible avant une sauvegarde, une copie de fichiers, un téléchargement ou toute opération nécessitant beaucoup de stockage.
Conclusion
La fonction shutil.disk_usage() constitue une solution simple pour connaître l'espace disque disponible en Python. En une seule instruction, elle permet d'obtenir la capacité totale du disque, l'espace utilisé et l'espace encore disponible.
Associée à quelques calculs simples, elle permet également d'afficher les valeurs en Go, de calculer le pourcentage d'occupation et de créer des scripts capables de détecter automatiquement un manque d'espace disque.
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


