【发布时间】:2019-07-08 01:07:30
【问题描述】:
我正在开发一个程序来检查文件夹大小,然后打印出最大使用量的百分比,即 50GB。我遇到的问题是,如果数据只有 1mb 或不是 gb 的小数字,我没有得到准确的百分比。如何改进我的代码来解决这个问题。
import math, os
def get(fold):
total_size = 0
for dirpath, dirnames, filenames in os.walk(fold):
for f in filenames:
fp = os.path.join(dirpath, f)
size = os.path.getsize(fp)
total_size += size
size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
i = int(math.floor(math.log(total_size, 1024)))
p = math.pow(1024, i)
s = round(total_size / p, 2)
return "%s %s" % (s, size_name[i])
per = 100*float(get(fold))/float(5e+10)
print(per)
【问题讨论】:
-
您的预期结果是什么?没有比
0.00%更好的东西了,只有小数点后两位。您可以考虑增加round呼叫中的小数位数。 -
@Selcuk 在我转换它之后。然后去计算我的文件是 500mb 的百分比,它返回 9%。什么时候应该返回 0.5。
-
为什么它会返回 0.5 而不是 1%?在任何情况下,您都应该添加一个无法按预期工作的示例案例。它对我来说很好。
-
@Selcuk 嗯,500MB 是 50GB 的 0.5%,不是吗?
-
不,不是……
标签: python math percentage filesize calculation