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 的用法不对吗? 还是有其他更好的办法可以保证文件能完整的下载呢?

相关阅读:

怎么样让它点击两次后还原成原来的颜色?

android使用七牛上传图片,为什么有些手机可以,有些不可以呢,急求回答?

用xposed框架无法hook 类的问题

python怎么通过input获取矩阵

【急】一组数字用千分位隔开,为什么在有的电脑上千分符逗号变成了点?

TCP网络编程一般都是怎么封包解包的? 怎么才能解决不同平台的字节序和不同整数大小的问题?

liunx服务器的缓冲怎么清理

PHP 编码规范,这里该不该断行?

gulp-ruby-sass 编译 sass时出错,请问什么原因啊?

寻路算法后续html5实现?

为什么有MIME协议?

请问下七牛能解除手机绑定吗?

node.js中npm安装的模块在哪个目录下

使用vue-cli搭建的项目如何在index.html里引入静态css和js?

nodejs写爬虫做微博搜索有比较好的资源推荐吗?

安卓答题app的题目等数据采用什么方式存储比较好?

有没有方法让php项目代码转换成人读不懂的代码?

关于lua语言的两个小疑问

php里如何在函数中获取调用此函数的当前文件名

免证书调试后需要退回或重装XCode吗?