Comment puis-je calculer la taille d'un répertoire en Python ?

DDD
Libérer: 2024-11-02 06:20:29
original
266 Les gens l'ont consulté

How Can I Calculate the Size of a Directory in Python?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!