【问题标题】:Using Tqdm to add a Progress Bar when Downloading Files下载文件时使用Tqdm添加进度条
【发布时间】:2017-05-02 16:58:23
【问题描述】:

我一直在尝试使用 python 3.6 中的 Tqdm 模块设置进度条,但似乎我已经完成了一半。

我的代码如下:

from tqdm import tqdm
import requests
import time

url = 'http://alpha.chem.umb.edu/chemistry/ch115/Mridula/CHEM%20116/documents/chapter_20au.pdf'

# Streaming, so we can iterate over the response.
r = requests.get(url, stream=True)
#Using The Url as a filename
local_filename = url.split('/')[-1]
# Total size in bytes.
total_size = int(r.headers.get('content-length', 0))
#Printing Total size in Bytes
print(total_size)

#TQDM
with open(local_filename, 'wb') as f:
    for data in tqdm(r.iter_content(chunk_size = 512), total=total_size, unit='B', unit_scale=True):
        f.write(data)

问题是,当我在r.iter_content 中插入chunk_size = 512 时,进度条在显示下载数据时根本不会加载,但是当我完全删除chunk_size = 512 并将括号留空时,进度条会加载完全符合预期,但下载速度很糟糕。

我在这里做错了什么?

【问题讨论】:

    标签: python download tqdm


    【解决方案1】:

    您并不遥远,只是缺少了几乎所有使进度条相应工作的代码。假设您已经创建了界面,这是我用于进度条的方法。它下载文件并将其保存在桌面上(但您可以指定要保存它的位置)。它只需要下载多少文件并将其除以总文件大小,然后使用该值来更新进度条。如果这段代码有帮助,请告诉我:

    url = 'http://alpha.chem.umb.edu/chemistry/ch115/Mridula/CHEM%20116/documents/chapter_20au.pdf'
    save = 'C:/Users/' + username + "/Desktop/"    
    r = requests.get(url, stream=True)
    total_size = int(r.headers["Content-Length"])
    downloaded = 0  # keep track of size downloaded so far
    chunkSize = 1024
    bars = int(total_size / chunkSize)
    print(dict(num_bars=bars))
    with open(filename, "wb") as f:
        for chunk in tqdm(r.iter_content(chunk_size=chunkSize), total=bars, unit="KB",
                                      desc=filename, leave=True):
            f.write(chunk)
            downloaded += chunkSize  # increment the downloaded
            prog = ((downloaded * 100 / total_size))
            progress["value"] = (prog)  # *100 #Default max value of tkinter progress is 100
                
    return
    

    progress = 进度条

    【讨论】:

    猜你喜欢
    • 2019-09-23
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多