У меня есть простая tqdm
панель, интегрированная с модулем requests
для загрузки файлов, код:
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, а текущая скорость - в КБ / с, я попытался вместо этого изменить единицу измерения на КБ, но затем она просто делает скорость go до 2,87 кБ / с, что должно быть МБ / с. Я попытался просмотреть репозитории GitHub, которые, как мне известно, используют tqdm, но не смог найти пример того, что я хочу сделать, как мне сделать так, чтобы он показывал 123 МБ в общем размере и скорость начала в КБ / с, но затем изменился на МБ / с, когда он превышает 1000?