You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

下载脚本进度百分比显示反向,如何实现初始0%完成时100%?

解决进度百分比反向的问题

很明显你这里的问题出在进度百分比的计算逻辑上——你现在用的是剩余未下载的MB数除以总MB数,所以一开始剩余25MB的时候显示100%,下载完剩余0MB时显示0%,完全反过来了。

要改成从0%到100%的正向进度,只需要把计算逻辑换成已完成的MB数除以总MB数就行,有两种简单的修改方式:

方法一:基于已完成的次数计算

因为你每次循环t都会加1,刚好对应已下载的MB数(每次下载1MB),所以可以直接用t来计算:

import time
x = 25
y = x
t = 0
downloading = True
while downloading:
    time.sleep(1)
    t += 1
    x -= 1
    # 改为用已完成的t除以总y计算进度
    f = ((t/y) * 100)
    print('Time:', str(t) + ',', 'Progress: ', '{0:.2f}%'.format(f), 'Remaining: ' + str(x), 'MB', end="\r")
    if(x == 0):
        print('\nComplete!')
        break

方法二:基于剩余量反推已完成量

如果不想依赖t,也可以用总MB数减去剩余MB数来得到已完成量:

import time
x = 25
y = x
t = 0
downloading = True
while downloading:
    time.sleep(1)
    t += 1
    x -= 1
    # 用总y减去剩余x,得到已完成量后计算比例
    f = (((y - x)/y) * 100)
    print('Time:', str(t) + ',', 'Progress: ', '{0:.2f}%'.format(f), 'Remaining: ' + str(x), 'MB', end="\r")
    if(x == 0):
        print('\nComplete!')
        break

另外我把原代码里的'{0:.2}'.format(str(f))改成了'{0:.2f}%'.format(f),这样格式化出来的百分比会更规范(比如显示52.00%而不是5.2e+01%),如果你偏好保留两位有效数字,也可以改回'{0:.2}'.format(f),不需要先把f转成字符串再格式化。

内容的提问来源于stack exchange,提问作者Kyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:00:23