バイトサイズから人間が読めるサイズを返す関数:
>>> human_readable(2048)
'2 kilobytes'
これどうやってするの?
ベストアンサー1
上記の「ライブラリを必要とするにはタスクが小さすぎる」問題を、簡単な実装 (f 文字列を使用するため、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ヨビバイトを超える数字
- 任意の単位 (ギビビットで数えるのもいいかもしれません!)
例:
>>> sizeof_fmt(168963795964)
'157.4GiB'
によるフレッド・シレラ