python文件下载不全_python requests 下载大文件不完整

目前我有一个脚本, 从帝联的 CDN 外链获取一下文件作为备份.

使用的是

Python 2.7.10

requests 2.8.1

目前碰到一个情况, 使用 requests 下载大文件的时候会出现下载文件不完整的情况, 出现的概率非常大, 应该不会是网络原因导致的. 相关代码概括如下:

requests.adapters.DEFAULT_RETRIES = 5

response = requests.get(url, stream=True)

status = response.status_code

if status == 200:

total_size = int(response.headers['Content-Length'])

with open('xxx', 'wb') as of:

for chunk in response.iter_content(chunk_size=102400):

if chunk:

of.write(chunk)

下载完毕后我会使用如下方式和上面的 total_size 进行对比

with open('xxx', 'r') as f:

if isinstance(f, file):

length = os.fstat(f.fileno()).st_size

if total_size == length:

True

else:

False

代码逻辑如上. 但是对于 100M 以上的文件, 几乎都是保存在本地的文件和获取的响应头里面的 content-length 不一致.

是我 requests 的用法不对吗? 还是有其他更好的办法可以保证文件能完整的下载呢?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值