277 votes

Bibliothèque réutilisable pour obtenir une version lisible par humain de taille du fichier ?

Il existe divers extraits sur le web qui vous donnerait une fonction pour retourner la taille lisible humain de taille octets :

Mais y at-il une bibliothèque Python qui permet cela ?

593voto

Sridhar Ratnakumar Points 12390

Aborder ces "trop petit une tâche d'exiger une bibliothèque" de l'émission par une mise en œuvre directe:

def sizeof_fmt(num):
    for x in ['bytes','KB','MB','GB','TB']:
        if num < 1024.0:
            return "%3.1f %s" % (num, x)
        num /= 1024.0

Exemple:

>>> sizeof_fmt(168963795964)
'157.4GB'

par Fred Cirera


Mise à jour: Légèrement tordu extrait de travaille avec de très grandes tailles. Quelque chose de plus grand que celui de la TUBERCULOSE sera affiché dans le Sct.

def sizeof_fmt(num):
    for x in ['bytes','KB','MB','GB']:
        if num < 1024.0:
            return "%3.1f%s" % (num, x)
        num /= 1024.0
    return "%3.1f%s" % (num, 'TB')

Mise à jour 2: Une autre légère tweak pour gérer les négatifs des tailles de fichier (utile quand on traite avec une taille de fichier deltas).

def sizeof_fmt(num):
    for x in ['bytes','KB','MB','GB']:
        if num < 1024.0 and num > -1024.0:
            return "%3.1f%s" % (num, x)
        num /= 1024.0
    return "%3.1f%s" % (num, 'TB')

141voto

Pyrocater Points 93

Une bibliothèque qui possède toutes les fonctionnalités qu’il semble que vous cherchez, c’est humaniser. Humanize.naturalsize() semble faire tout ce que vous recherchez.

38voto

joctee Points 674

Voici ma version. Il n’utilise pas une boucle for. Il a la complexité constante, O (1) et est en théorie plus efficace que les réponses ici qu’utiliser une boucle for.

Pour le rendre que plus clair ce qui se passe, nous pouvons omettre le code pour la chaîne mise en forme. Voici les lignes qui effectuent le travail :

8voto

Sridhar Ratnakumar Points 12390

Une telle bibliothèque est hurry.filesize.

5voto

markltbaker Points 153

Riffs sur l’extrait de code fourni une alternative à hurry.filesize(), voici un extrait qui donne un nombre variable de précision basé sur le préfixe utilisé. Il n’est pas aussi laconique que quelques extraits, mais j’aime les résultats.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X