Calcul de la taille d'un répertoire avec Python : un guide complet
Lors de la navigation dans des systèmes de fichiers étendus, déterminer la taille d'un répertoire peut devenir inestimable. Python propose une gamme de modules qui englobent cette fonctionnalité.
Considérez l'extrait de code Python suivant :
<code class="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) # Skip symbolic links if not os.path.islink(fp): total_size += os.path.getsize(fp) return total_size print(get_size(), 'bytes')</code>
Cette solution offre une approche complète en parcourant de manière récursive les sous-répertoires et en accumulant la taille des fichiers. Il évite les liens symboliques pour garantir des calculs de taille précis. La taille formatée (par exemple, Mo/Go) n'est pas directement incorporée mais peut être facilement ajoutée comme étape de suivi.
De plus, pour calculer uniquement la taille du répertoire racine sans descendre dans les sous-répertoires, une approche simplifiée utilisant os.listdir est disponible :
<code class="python">import os sum(os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f))</code>
Cet extrait de code résume de manière compacte les tailles de fichiers dans le répertoire actuel, à l'exclusion des sous-répertoires.
De plus, pour une détermination précise de la taille du fichier, os.path.getsize est préféré à os.stat().st_size. Ce dernier peut être trompeur en raison d'optimisations et de frais généraux potentiels.
"os.scandir" s'est avéré être une alternative efficace à "os.walk" dans Python 3.4 et versions antérieures. Et dans Python 3.5 et versions ultérieures, "os.walk" a été amélioré pour correspondre aux performances de "os.scandir".
Pour une approche plus contemporaine, "pathlib" offre une solution pratique :
<code class="python">from pathlib import Path root_directory = Path('.') sum(f.stat().st_size for f in root_directory.glob('**/*') if f.is_file())</code>
Ce code exploite la fonction "glob" pour une recherche récursive et utilise des objets "Path" pour une gestion améliorée des fichiers.
En résumé, Python fournit un arsenal de fonctions pour répondre à vos besoins de calcul de la taille du répertoire. Choisissez l'approche qui correspond le mieux à vos besoins pour naviguer et gérer efficacement vos systèmes de fichiers.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!