Как сделать индикатор при загрузке файла в Python - PullRequest
1 голос
/ 27 июня 2019

Я использую tqdm для контроля загрузки файлов в моих программах на python, но он не показывает индикатор выполнения. У меня есть этот код:

from tqdm import *
import requests
url = "https://as2.cdn.asset.aparat.com/aparat-video/520055aa72618571e4ce34b434e328b615570838-144p__58945.mp4"
name = "video"
with requests.get(url, stream=True) as r:
    r.raise_for_status()
    with open(name, 'wb') as f:
        for chunk in tqdm(r.iter_content(chunk_size=8192), r.headers.get("content-length")):
            if chunk:  # filter out keep-alive new chunks
                f.write(chunk)
                # f.flush()

Но когда я запускаю его, он не показывает мне индикатор выполнения, он показывает мне это:

763499: 94it [00:00, 192.31it/s]

Я тоже пробовал этот код:

from tqdm import *
import requests
url = "https://as2.cdn.asset.aparat.com/aparat-video/520055aa72618571e4ce34b434e328b615570838-144p__58945.mp4"
name = "asdasdjk"
with requests.get(url, stream=True) as r:
    r.raise_for_status()
    with open(name, 'wb') as f:
        for chunk, bar in r.iter_content(chunk_size=8192), r.headers.get("content-length"),tqdm(range(0,int(r.headers.get("content-length")))):
            if chunk:  # filter out keep-alive new chunks
                f.write(chunk)
                # f.flush()

Но это дает мне ошибку:

Exception has occurred: ValueError
too many values to unpack (expected 2)
  File "test.py", line 8, in <module>
    for chunk, bar in r.iter_content(chunk_size=8192), r.headers.get("content-length"),tqdm(range(0,int(r.headers.get("content-length")))):

1 Ответ

1 голос
/ 27 июня 2019
from tqdm import *
import requests
url = "https://as2.cdn.asset.aparat.com/aparat-video/520055aa72618571e4ce34b434e328b615570838-144p__58945.mp4"
name = "video"
with requests.get(url, stream=True) as r:
    r.raise_for_status()
    with open(name, 'wb') as f:
        pbar = tqdm(total=int(r.headers['Content-Length']))
        for chunk in r.iter_content(chunk_size=8192):
            if chunk:  # filter out keep-alive new chunks
                f.write(chunk)
                pbar.update(len(chunk))
...