【发布时间】:2021-07-28 04:55:42
【问题描述】:
这是下载文件的脚本的一部分。它的问题是downloaded_percent 有时会超过 100。
with open(outputname, 'wb') as DEST:
chunksize = 8192
downloaded = 0
for chunk in SESSION.iter_content(chunk_size=chunksize):
DEST.write(chunk)
downloaded += chunksize
downloaded_percent = (downloaded * 100) / file_size ## <<< FIXME exceeds 100
progress_info = {file_size: f'%{downloaded_percent:.2f}'}
print(progress_info, end='\r')
这是我迄今为止尝试过的:
- 在
write之前使用if语句,但结果正好相反,即downloaded_percent永远不会达到100:
if chunk:
DEST.write(chunk)
downloaded += chunksize
downloaded_percent = (downloaded * 100) / file_size ## <<< FIXME never reaches 100
- 使用
if语句将downloaded_percent设置为100(如果高于该值):
DEST.write(chunk)
downloaded += chunksize
downloaded_percent = (downloaded * 100) / file_size ## <<< FIXME exceeds 100
if downloaded_percent > 100:
downloaded_percent = 100
这可以解决问题,但在每次迭代中检查数量似乎并不有效。
我想知道是否有更好的方法。
【问题讨论】:
-
您是否尝试使用 100. 而不是 100 ?
-
什么意思?
-
downloaded_percent = (已下载 * 100.) / 文件大小
-
哦,是的,我刚刚做了,但还是一样(例如,它给出 100.14)。
-
您能否为“100.14”的情况提供“已下载”和“文件大小”的值?
标签: python progress-bar