Допускающая повторное использование библиотека для получения человекочитаемой версии размера файла?

Ну, Вы не можете действительно определить объект, поскольку он не существует и таким образом исключение, которое Вы получаете.

209
задан Reinstate Monica 11 November 2014 в 10:56
поделиться

4 ответа

Решение вышеупомянутой проблемы «слишком маленькая задача, чтобы требовать библиотеки» путем простой реализации:

def sizeof_fmt(num, suffix='B'):
    for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']:
        if abs(num) < 1024.0:
            return "%3.1f%s%s" % (num, unit, suffix)
        num /= 1024.0
    return "%.1f%s%s" % (num, 'Yi', suffix)

Поддерживает:

  • все известные в настоящее время двоичные префиксы
  • отрицательные и положительные числа
  • числа больше 1000 йобибитов
  • произвольных единиц (может быть, вы любите считать в гибибитах!)

Пример:

>>> sizeof_fmt(168963795964)
'157.4GiB'

от Fred Cirera

469
ответ дан 23 November 2019 в 04:36
поделиться

Одна из таких библиотек - hurry.filesize .

>>> from hurry.filesize import alternative
>>> size(1, system=alternative)
'1 byte'
>>> size(10, system=alternative)
'10 bytes'
>>> size(1024, system=alternative)
'1 KB'
9
ответ дан 23 November 2019 в 04:36
поделиться

DiveIntoPython3 также сообщает об этой функции.

2
ответ дан 23 November 2019 в 04:36
поделиться
def human_readable_data_quantity(quantity, multiple=1024):
    if quantity == 0:
        quantity = +0
    SUFFIXES = ["B"] + [i + {1000: "B", 1024: "iB"}[multiple] for i in "KMGTPEZY"]
    for suffix in SUFFIXES:
        if quantity < multiple or suffix == SUFFIXES[-1]:
            if suffix == SUFFIXES[0]:
                return "%d%s" % (quantity, suffix)
            else:
                return "%.1f%s" % (quantity, suffix)
        else:
            quantity /= multiple
1
ответ дан 23 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: