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

# -*- 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

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值