code: def humanize_bytes(bytesize, precision=2):
      
      abbrevs = (
          (1 << 50, 'PB'),
          (1 << 40, 'TB'),
          (1 << 30, 'GB'),
          (1 << 20, 'MB'),
          (1 << 10, 'kB'),
          (1, 'bytes')
      )
      if bytesize == 1:
          return '1 byte'
      for factor, suffix in abbrevs:
          if bytesize >= factor:
              break
      if factor == 1:
          precision = 0
      return '%.*f %s' % (precision, bytesize / float(factor), suffix)
docs: Humanize byte size figures
  
      https://gist.github.com/moird/3684595