在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参数的大小,以适应您的下载速度和系统资源。
希望这个例子对你有帮助!
