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"))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值