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

使用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库可以使得网络请求的进度显示更加直观,方便我们了解任务的进行情况。