使用Python的tqdm库实现网络请求进度条效果
发布时间:2023-12-11 11:04:34
使用Python的tqdm库可以方便地在控制台中显示进度条效果,特别适用于需要处理大量数据或耗时的任务,比如网络请求。
tqdm是一个可以在Python中快速、可扩展、可定制的进度条库,可以通过pip安装:
pip install tqdm
下面是一个简单的例子,演示了如何使用tqdm库来追踪网络请求的进度:
import requests
from tqdm import tqdm
def download_file(url, filename):
# 发送GET请求并获取文件长度
response = requests.get(url, stream=True)
file_size = int(response.headers.get('Content-Length', 0))
# 使用tqdm创建一个进度条,并设置总长度
progress_bar = tqdm(total=file_size, unit='B', unit_scale=True)
with open(filename, 'wb') as file:
# 逐个读取数据块,并更新进度条
for chunk in response.iter_content(1024):
# 写入文件
file.write(chunk)
# 更新进度条的当前值
progress_bar.update(len(chunk))
# 关闭进度条
progress_bar.close()
# 测试代码
download_file('https://example.com/bigfile.zip', 'bigfile.zip')
在上面的例子中,我们定义了一个download_file函数,它接受一个URL和一个文件名作为输入参数。函数使用requests库发送GET请求来下载文件,并使用tqdm库创建一个进度条。
首先,我们通过发送一个带有stream=True参数的GET请求来获取文件的内容长度。然后,我们使用tqdm库创建一个进度条,设置总长度为文件的内容长度。
我们使用open函数打开一个文件,并将文件句柄赋值给file变量。然后,我们使用response.iter_content方法来逐个读取文件的数据块(每次读取1024字节),并将数据块写入文件中。
在每次处理完一个数据块后,我们调用progress_bar.update方法来更新进度条的当前值,传入的参数是已处理的字节数。这样,进度条就会根据处理的数据量来自动更新。
最后,我们在下载完成后调用progress_bar.close方法来关闭进度条。
在测试代码中,我们调用download_file函数来下载一个文件。你可以将https://example.com/bigfile.zip替换为你想要下载的文件的URL,将bigfile.zip替换为你想要保存的文件名。
执行上面的代码,你就可以在控制台中看到一个实时更新的进度条,显示文件下载的进度。
使用tqdm库可以使得网络请求的进度显示更加直观,方便我们了解任务的进行情况。
