1. ホーム
  2. パイソン

[解決済み】ファイルサイズを人間が読めるようにする?

2022-04-01 01:14:02

質問

バイトサイズから人間が読めるサイズを返す関数。

>>> human_readable(2048)
'2 kilobytes'
>>>

どうすればいいのか?

どのように解決するのですか?

上記の "too small a task to require a library" の問題に、簡単な実装で対応します(f-strings を使うので Python 3.6+)。

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

サポートします。

  • 現在知られているすべての バイナリ接頭辞
  • 負の数と正の数
  • 1000 Yobibytesを超える数値
  • 任意の単位(ギビットで数えるのが好きかも!?)

>>> sizeof_fmt(168963795964)
'157.4GiB'

によって フレッド・チレラ