内容来源于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
标签:文件大小,format,index,MB,bytes,print,合适,python3,size
From: https://www.cnblogs.com/brian-sun/p/18541807