В настоящее время я пытаюсь загрузить сжатый gzip-файл набора данных с веб-сайта и использовать библиотеку tqdm для отображения прогресса загрузки. Однако я заметил, что индикатор выполнения tqdm будет переполнен из-за неточного размера файла из «Content-Length» в заголовке ответа. Я вставлю приведенный ниже пример кода в качестве ссылки:
import requests
from tqdm import tqdm
url = 'https://www.cs.cmu.edu/~./enron/enron_mail_20150507.tar.gz'
filename = url.split('/')[-1]
with requests.get(url, stream=True) as req:
with open(filename, 'wb') as file:
print('downloading the Enron dataset')
total_size = int(req.headers['Content-Length'])
print(req.headers)
progress = tqdm(total=(total_size),
unit='iB', unit_scale=True, unit_divisor=1024, ascii=' █',
bar_format='{l_bar}{bar:50}{r_bar}{bar:-50b}')
for chunk in req.iter_content(chunk_size=1024):
if chunk:
progress.update(len(chunk))
file.write(chunk)
print('download complete!')
Я провел поиск, но не смог найти хорошего решения этой проблемы. Есть ли способы заранее определить размер файла gzip, который нужно загрузить? Или какие-либо предложения, чтобы обойти это?