Python字节单位转换实例

我就废话不多说了,直接上代码!

from enum import Enum
 
class Values():
  values={"B":1}
  @staticmethod
  def getValues():
    if len(Values.values)<=1:
      kbunits=["KB","MB","GB","TB","PB","EB","ZB","YB","BB","NB","DB"]
      kibunits=["KiBi","MiB","GiB","TiB","PiB","EiB","ZiB","YiB","BiB","NiB","DiB"]
      for index,unit in enumerate(kibunits):
        Values.values[unit]=1<<(index+1)*10
      for index,unit in enumerate(kbunits):
        Values.values[unit]=10**((index+1)*3)
    return Values.values
  @staticmethod
  def get(key):
    return Values.getValues().get(key)
  
class Units(Enum):
 
  def __new__(cls,name):
    obj = object.__new__(cls)
    print (name)
    obj._value_=Values.get(name)
    return obj
  B=("B")
  KB=("KB")
  KiB=("KiBi")
  MB=("MB")
  MiB=("MiB")
  GB=("GB")
  GiB=("GiB")
  TB=("TB")
  TiB=("TiB")
  PB=("PB")
  PiB=("PiB")
  EB=("EB")
  EiB=("EiB")
  ZB=("ZB")
  ZiB=("ZiB")
  YB=("YB")
  YiB=("YiB")
  BB=("BB")
  BiB=("BiB")
  NB=("NB")
  NiB=("NiB")
  DB=("DB")
  DiB=("DiB")
 
class ByteUnitConversionUtil():
  __defaultformat="%.5f"
  @staticmethod
  def convert(value,unit=Units.B,format=__defaultformat):
    if(unit==Units.B):
      return str(value).split(".",2)[0]+unit.name
    else:
      return (format % (value/unit.value))+unit.name
    
if __name__=="__main__":
  print(ByteUnitConversionUtil.convert(12313213453,Units.KiB,"%.2f"))

以上这篇Python字节单位转换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持云海天教程。