欢迎访问宙启技术站
智能推送

在Python中使用IncrementalBar()显示并追踪下载进度

发布时间:2024-01-03 00:47:29

在Python中,我们可以使用tqdm库中的IncrementalBar()来显示和追踪下载进度。要使用这个进度条,我们首先需要安装tqdm库。

可以使用以下命令来安装tqdm库:

pip install tqdm

安装完成后,我们可以使用以下代码来显示并追踪下载进度:

import requests
from tqdm import tqdm

url = 'https://example.com/file_to_download.txt'

# 发送HTTP请求并获取文件大小
response = requests.head(url)
file_size = int(response.headers.get('Content-Length', 0))

# 设置进度条
progress_bar = tqdm(total=file_size, unit='B', unit_scale=True)

# 下载文件并写入本地
response = requests.get(url, stream=True)
with open('downloaded_file.txt', 'wb') as file:
    for chunk in response.iter_content(1024):
        # 更新进度条
        progress_bar.update(len(chunk))
        file.write(chunk)

# 关闭进度条
progress_bar.close()

print('文件下载完成!')

在上述代码中,我们首先使用requests.head()方法获取要下载文件的大小,并将其存储在file_size变量中。

接下来,我们使用tqdm()函数创建一个新的进度条,其中total参数设置为文件大小,unit参数设置为字节,unit_scale参数表示以更友好的单位(例如MB、GB)来显示进度条的进度。

然后,我们使用requests.get()方法以流的形式下载文件,并在循环中使用iter_content()方法来按块迭代文件内容。在每次迭代中,我们更新进度条并将文件块写入本地文件。

最后,我们关闭进度条并打印出文件下载完成的提示。

需要注意的是,为了更好地显示进度条,我们将unit_scale参数设置为True,这将自动将字节转换为更大的单位(例如MB、GB)。您还可以根据需要调整chunk参数的大小,以适应您的下载速度和系统资源。

希望这个例子对你有帮助!