Python byte unit conversion of converts bytes to K M G T

  • 2021-09-12 01:41:11
  • OfStack


def bytes_to_human(n):
  symbols = ('K','M','G','T','P','E','Z','Y')
  prefix = {}
  for i,s in enumerate(symbols):
    prefix[s] = 1 << (i + 1) * 10
  for s in reversed(symbols):
    if n >= prefix[s]:
      value = float(n) / prefix[s]
      return '%.1f%s' % (value,s)
  return '%sB' % n

Storage unit conversion code written by python (in bytes (B))


def bytes(bytes):
  if bytes < 1024: # Bit 
    bytes = str(round(bytes, 2)) + ' B' # Byte 
  elif bytes >= 1024 and bytes < 1024 * 1024:
    bytes = str(round(bytes / 1024, 2)) + ' KB' # Kilobyte 
  elif bytes >= 1024 * 1024 and bytes < 1024 * 1024 * 1024:
    bytes = str(round(bytes / 1024 / 1024, 2)) + ' MB' # Megabyte 
  elif bytes >= 1024 * 1024 * 1024 and bytes < 1024 * 1024 * 1024 * 1024:
    bytes = str(round(bytes / 1024 / 1024 / 1024, 2)) + ' GB' # Gigabyte 
  elif bytes >= 1024 * 1024 * 1024 * 1024 and bytes < 1024 * 1024 * 1024 * 1024 * 1024:
    bytes = str(round(bytes / 1024 / 1024 / 1024 / 1024, 2)) + ' TB' # Terabyte 
  elif bytes >= 1024 * 1024 * 1024 * 1024 * 1024 and bytes < 1024 * 1024 * 1024 * 1024 * 1024 * 1024:
    bytes = str(round(bytes / 1024 / 1024 / 1024 / 1024 / 1024, 2)) + ' PB' # Pat byte 
  elif bytes >= 1024 * 1024 * 1024 * 1024 * 1024 * 1024 and bytes < 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024:
    bytes = str(round(bytes / 1024 / 1024 / 1024 / 1024 / 1024 /1024, 2)) + ' EB' # Axabyte 
  return bytes
 
if __name__ == '__main__':
  print('0 : ' + bytes(0))
  print('1 : ' + bytes(1))
  print('2 : ' + bytes(10))
  print('3 : ' + bytes(100))
  print('4 : ' + bytes(1000))
  print('5 : ' + bytes(10000))
  print('6 : ' + bytes(100000))
  print('7 : ' + bytes(1000000))
  print('8 : ' + bytes(10000000))
  print('9 : ' + bytes(100000000))
  print('10 : ' + bytes(1000000000))
  print('11 : ' + bytes(10000000000))
  print('12 : ' + bytes(100000000000))
  print('13 : ' + bytes(1000000000000))
  print('14 : ' + bytes(10000000000000))
  print('15 : ' + bytes(100000000000000))
  print('16 : ' + bytes(1000000000000000))
  print('17 : ' + bytes(10000000000000000))
  print('18 : ' + bytes(100000000000000000))
  print('19 : ' + bytes(1000000000000000000))
  print('20 : ' + bytes(10000000000000000000))
  print('20 : ' + bytes(100000000000000000000))
  print('20 : ' + bytes(1000000000000000000000))

Test:

"D:\Program Files\Python\Python36\python.exe" C:/Users/Jochen/PycharmProjects/mysite/bytes.py
0: 0 B
1: 1 B
2:10 B
3: 100 B
4: 1000 B
5: 9.77 KB
6: 97.66 KB
7: 976.56 KB
8: 9.54 MB
9: 95.37 MB
10: 953.67 MB
11: 9.31 GB
12: 93.13 GB
13: 931.32 GB
14: 9.09 TB
15: 90.95 TB
16: 909.49 TB
17: 8.88 PB
18: 88.82 PB
19: 888.18 PB
20: 8.67 EB
20: 86.74 EB
20: 867.36 EB

Process finished with exit code 0


Related articles: