python 转换容量单位 实现ls -h功能

功能1
把字节转换自适应转为其他单位(ls -h),超过1024投入高一级的区间,不足1024投入本级区间,如1000K是一个合理值,1030K就应该转换为1M,2050K应该转换为2M
功能2
把其他单位转换为字节
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re def size_b_to_other(size):
units = ['B', 'KB', 'MB', 'GB', 'TB']
# 处理异常
if size <= 0:
return False # 遍历单位的位置并用取整除赋值
for unit in units:
if size >= 1024:
size //= 1024
else:
size_h = '{} {}'.format(size, unit)
return size_h size_h = '{} {}'.format(size, unit)
return size_h def size_other_to_b(size, unit):
units = ['B', 'KB', 'MB', 'GB', 'TB']
# 处理异常
if size <= 0:
return False # 找出单位的索引位置
nu = units.index(unit) # 根据索引位置次幂在乘以系数
size_h = int(size) * 1024 ** nu
return int(size_h) if __name__ == '__main__':
"""
这里可以实现字节B转换其他单位或者其他单位转字节B,输入容量数字和单位后自动识别转换
格式为10000B或者10M、1gb、20kb
"""
data = input("请输要转换的容量和单位:")
# 忽略大小写敏感
size = re.sub("\D", "", data)
size = int(size)
unit = ''.join(re.findall(r'[A-Za-z]', str.upper(data)))
if unit == "B":
result = size_b_to_other(size)
else:
# 支持单位简写
if len(unit) == 1 :
unit = unit + "B"
result = size_other_to_b(size, unit) print(result)
上一篇:Django的rest_framework的视图之基于ModelViewSet视图源码解析


下一篇:Django 之 admin组件使用&源码解析