gpt4 book ai didi

python-3.x - 如何让TQDM进度条在KB和MB之间自动更新

转载 作者:行者123 更新时间:2023-12-05 06:18:39 26 4
gpt4 key购买 nike

我有一个简单的 tqdmrequests 集成的栏下载文件模块,代码:

import requests
from tqdm import tqdm

def download_to_file(path: str, filename: str, url: str):
try:
r = requests.get(url, stream=True)
file_length = int(r.headers['Content-Length'])
chunk_size = 1024 # 1MB
num_bars = int(file_length / chunk_size)

if r.status_code == 200:
with open(f'{path}\\{filename}', 'wb+') as f:
pbar = tqdm(total=num_bars, unit='B', unit_scale=True, desc=filename, leave=False, file=sys.stdout,
unit_divisor=1024)
for chunk in r.iter_content(chunk_size=chunk_size):
if chunk:
pbar.update()
f.write(chunk)
else:
raise requests.HTTPError(f'Status code is {r.status_code}')
except Exception as ex:
print(f'[-] Failed to download \'{filename}\'! {str(ex)}')
pass

有效,但这是进度条 file.extension: 100%|████████████▉| 123k/123k [00:58<00:00, 2.87kB/s] ,问题是 123MB 文件显示为 123k,当前速度以 KB/s 显示,我尝试将单位更改为 KB,但它只会使速度变为 2.87kKB/s,应该是 MB/s。我尝试查看我知道使用 tqdm 的 GitHub 存储库,但找不到我想做什么的示例,我如何让它显示总大小为 123MB,速度从 KB/s 开始,然后更改为 MB/什么时候超过 1000?

最佳答案

这已经很老了,但我只是需要做同样的事情。我用了pbar = tqdm(total=num_bars, unit="bytes", unit_scale=True, unit_divisor=1024)对于我的进度条,它的结果是 3%|▎ | 9.00M/282M [00:02<01:01, 4.69Mbytes/s] (此文件大小正确)所以我想你不应该划分 file_length通过 chunk_size , 作为 total是期望的迭代次数,tqdm会自动调整单位

我希望你或下一个人会觉得这很有用

关于python-3.x - 如何让TQDM进度条在KB和MB之间自动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61194340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com