python3 处理文件大小,自动选择合适单位

内容来源于chatgpt

def format_size(bytes):
    """
    将字节大小转换为适当的单位(KB, MB, GB等),支持负数。

    :param bytes: 原始字节大小,可以为负数
    :return: 字符串,格式化后的大小和单位
    """
    # 定义单位和阈值
    units = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]
    
    # 记录负号
    sign = "-" if bytes < 0 else ""
    
    # 转为正数进行计算
    size = abs(bytes)
    index = 0

    # 每次除以1024,直到大小合适或达到最大单位
    while size >= 1024 and index < len(units) - 1:
        size /= 1024.0
        index += 1

    # 格式化输出,保留两位小数,并加上负号(如有)
    return f"{sign}{size:.2f} {units[index]}"

# 示例使用
print(format_size(123456789))   # 输出: 117.74 MB
print(format_size(-1024))       # 输出: -1.00 KB
print(format_size(1048576))     # 输出: 1.00 MB
print(format_size(-987654321))  # 输出: -941.90 MB
posted @ 2024-11-12 14:25  BrianSun  阅读(2)  评论(0编辑  收藏  举报