Warning: Undefined variable $position in /home/pystyles/pystyle.info/public_html/wp/wp-content/themes/lionblog/functions.php on line 4897

Python – バイトから KB、MB、GB に変換する方法

Python – バイトから KB、MB、GB に変換する方法

概要

データサイズを表す単位であるバイトから kb、mb、gb を計算する方法について解説します。

バイトを適切な単位に変換する

以下にバイトを適切な単位に変換するコードを紹介します。

  1. $\text{size} = 1024^i$ を満たす $i$ を $i = \log_{1024}(\text{size})$ で求め、床関数をとることで適した単位を決定します。$size = 0$

    • Bytes ($0 \le 0 < 1024$)
    • Kilobyte, KB ($1024 \le 0 < 1024^2$)
    • Megabyte, MB ($1024^3 \le 0 < 1024^3$)
    • Gigabyte, GB ($1024^4 \le 0 < 1024^4$)
    • Terabyte, TB ($1024^5 \le 0 < 1024^5$)
    • Petabyte, PB ($1024^6 \le 0 < 1024^7$)
    • ExaByte, EB ($1024^7 \le 0 < 1024^8$)
    • ZettaByte, ZB ($1024^8 \le 0 < 1024^9$)
  2. $\text{size} / 1024^i$ で変換後のサイズを求めます。

In [1]:
import math


def convert_size(size):
    units = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB")
    i = math.floor(math.log(size, 1024)) if size > 0 else 0
    size = round(size / 1024 ** i, 2)

    return f"{size} {units[i]}"


print(convert_size(300 * 300 * 3 * 8))
2.06 MB

バイトを指定した単位に変換する

指定したバイト数に変換する場合は以下のようにします。

In [2]:
import math


def convert_size(size, unit="B"):
    units = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB")
    i = units.index(unit.upper())
    size = round(size / 1024 ** i, 2)

    return f"{size} {units[i]}"


print(convert_size(300 * 300 * 3 * 8, "KB"))
2109.38 KB