欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用requests下载文件并显示网速和下载进度

程序员文章站 2023-12-30 14:36:52
...
# -*- coding: utf-8 -*-
import time
import requests

# 请求下载地址,以流式的。打开要下载的文件位置。
with requests.get('http://down.360safe.com/setup.exe', stream=True) as r, open('setup.exe', 'wb') as file:
    # 请求文件的大小单位字节B
    total_size = int(r.headers['content-length'])
    # 以下载的字节大小
    content_size = 0
    # 进度下载完成的百分比
    plan = 0
    # 请求开始的时间
    start_time = time.time()
    # 上秒的下载大小
    temp_size = 0
    # 开始下载每次请求1024字节
    for content in r.iter_content(chunk_size=1024):
        file.write(content)
        # 统计以下载大小
        content_size += len(content)
        # 计算下载进度
        plan = (content_size / total_size) * 100
        # 每一秒统计一次下载量
        if time.time() - start_time > 1:
            # 重置开始时间
            start_time = time.time()
            # 每秒的下载量
            speed = content_size - temp_size
            # KB级下载速度处理
            if 0 <= speed < (1024 ** 2):
                print(plan, '%', speed / 1024, 'KB/s')
            # MB级下载速度处理
            elif (1024 ** 2) <= speed < (1024 ** 3):
                print(plan, '%', speed / (1024 ** 2), 'MB/s')
            # GB级下载速度处理
            elif (1024 ** 3) <= speed < (1024 ** 4):
                print(plan, '%', speed / (1024 ** 3), 'GB/s')
            # TB级下载速度处理
            else:
                print(plan, '%', speed / (1024 ** 4), 'TB/s')
            # 重置以下载大小
            temp_size = content_size

 

上一篇:

下一篇: