Чтобы загрузить файл JSON с сайта NVD, я использую следующий код:
#!/usr/bin/env python
from tqdm import tqdm
import time
import requests
import re
chunk_size = 1024
# Download JSON
year = input("Enter year: ")
url = requests.get('https://nvd.nist.gov/vuln/data-feeds#JSON_FEED')
for filename in re.findall("nvdcve-1.1-" + year + "\.json\.zip", url.text):
print("\r[!] Received file: " + filename)
r = requests.get("https://nvd.nist.gov/feeds/json/cve/1.1/" + filename, stream=True)
total_size = int(r.headers['content-length'])
with open("/tmp/" + filename, 'wb') as f:
for chunk in tqdm(iterable=r.iter_content(chunk_size=chunk_size), total=total_size / chunk_size, unit='KB'):
f.write(chunk)
time.sleep(1)
print("\n[+] The download is complete")
При запуске этого приложения все работает хорошо и файл скачивается, но в Pycham и терминале появляется странная ошибка:
82%|████████▏ | 2726/3342.5546875 [00:00<00:00, 1478.94KB/s]/usr/lib/python3/dist-packages/tqdm/std.py:522: TqdmWarning: clamping frac to range [0, 1]
full_bar = Bar(
100%|██████████| 3343/3342.5546875 [00:00<00:00, 3577.67KB/s]
[+] The download is complete
Подскажите, пожалуйста, в чем проблема? Я перерыл весь гугл, но ничего полезного не нашел.
@AlexanderJardim, большое спасибо за ссылку, я нашел материал, который, похоже, мне помог. Добавил один параметр dynamic_ncols=True
и вроде все работает как надо. Я все еще тестирую в разных ситуациях и операционных системах. Спасибо.
не забудьте написать ответ на свой вопрос, чтобы будущий пользователь мог извлечь из этого пользу
Благодаря наводке на ресурсе github.com/tqdm/tqdm/issues/681 далее github.com/tqdm/tqdm#redirecting-writing там я обнаружил, что можно задать параметр: dynamic_ncols=True
в итоге получилось так:
for chunk in tqdm(iterable=r.iter_content(chunk_size=chunk_size), total=total_size / chunk_size, unit=' KB', dynamic_ncols=True):
теперь все работает и никаких ошибок\предупреждений не появляется. Проверено на нескольких операционных системах.
Похоже, что библиотека не перенаправляет свой вывод в stderr github.com/tqdm/tqdm/issues/681