吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2310|回复: 10
收起左侧

[求助] python 下载读取content-length问题

[复制链接]
dengdengda 发表于 2021-8-3 10:23
[Python] 纯文本查看 复制代码
    def download(name,interval=0.5):
        def MB(byte):
           return byte / 1024 / 1024
        print(name)
        res = requests.get(link_sec,params=params,headers=headers,stream=True,allow_redirects=True)

        file_size = int(res.headers['Content-Length'])
        print(file_size)# 文件大小 Byte
        f = open(name, 'wb')
        down_size = 0  # 已下载字节数
        old_down_size = 0  # 上一次已下载字节数
        time_ = time.time()
        for chunk in res.iter_content(chunk_size=512):
            if chunk:
                f.write(chunk)
                down_size += len(chunk)
                if time.time() - time_ > interval:
                # rate = down_size / file_size * 100  # 进度  0.01%
                    speed = (down_size - old_down_size) / interval  # 速率 0.01B/s
                
                    old_down_size = down_size
                    time_ = time.time()
                    
                    print_params = [MB(speed), MB(down_size), MB(file_size), (file_size - down_size) / speed ]
                    print('\r{:.1f}MB/s - {:.1f}MB,共 {:.1f}MB,还剩 {:.0f} 秒   '.format(*print_params), end='')
                
        f.close()
        print('\r下载成功'+' '*50)
   
    download('qq.zip')
    



用这个函数下载文件,有的文件会因为读不到content-length,报错
file_size = int(res.headers['Content-Length'])
File "F:\ProgramData\Anaconda3\lib\site-packages\requests\structures.py", line 54, in __getitem__
return self._store[key.lower()][1]

KeyError: 'content-length'

但文件是存在并可以下载的
有没有办法解决如果读取失败仍然下载并且能够显示下载进度或者速度随便一项,不然黑乎乎的等的心理很焦急的感觉

谢谢各位大神

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ciker_li 发表于 2021-8-3 10:29
file_size = int(res.headers['Content-Length'])
在这里用try试试
头像被屏蔽
细水流长 发表于 2021-8-3 10:29
 楼主| dengdengda 发表于 2021-8-3 10:38
ciker_li 发表于 2021-8-3 10:29
file_size = int(res.headers['Content-Length'])
在这里用try试试

try 的话后面有引用file_size,还是不合适呢
7593454 发表于 2021-8-3 10:44
添加 headers 参数:“Accept-Encoding”: “identity”
 楼主| dengdengda 发表于 2021-8-3 10:58
链接失效很快,需要带header提交,header还在上一步post的返回里面...
 楼主| dengdengda 发表于 2021-8-3 10:59
细水流长 发表于 2021-8-3 10:29
给个下载测试链接

链接失效很快,需要带header提交,header还在上一步post的返回里面...
 楼主| dengdengda 发表于 2021-8-3 11:10
7593454 发表于 2021-8-3 10:44
添加 headers 参数:“Accept-Encoding”: “identity”

亲,还是不行呢
subney 发表于 2021-8-3 12:03
特意百度stream参数的用法
nonosky11 发表于 2021-8-3 12:08
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 00:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表