requests.get大文件,下载不完整,但找不到错误指示

时间:2018-10-23 23:08:48

标签: python python-3.x python-requests

我正在尝试使用请求来使用the same technique as this answer下载大文件(即android cts zip文件)。 间歇性地,它无法下载整个文件,但是直到尝试将其解压缩后,我才发现出现问题的任何迹象

CTS_URL = 'http://dl.google.com/dl/android/cts/android-cts-8.0_r14-linux_x86-x86.zip'
CTS_ZIP = 'android-cts-8.0_r14-linux_x86-x86.zip'

import requests

req = requests.get(CTS_URL, stream=True)
with open(CTS_ZIP, 'wb') as cts_zip_file:
  for chunk in req.iter_content(chunk_size=4096):
    cts_zip_file.write(chunk)

稍后,当我尝试解压缩时,出现BadZipFile("File is not a zip file")错误,因为该文件尚未完全下载

import zipfile
zipfile.ZipFile(CTS_ZIP)  # fails

但是,我无法从请求对象中得到任何提示,指出出了问题。 req.status200req.okTrue

req知道出了什么问题吗?我目前在交互式提示中具有这些请求对象之一,因此可以对其进行进一步检查。

1 个答案:

答案 0 :(得分:0)

您共享的代码对我有用。但是,您可能会考虑以下事项:

  1. 就像提到的草稿一样,检查Content-length的值。
  2. 检查您下载的文件。如果文件大小正确,则可以尝试在shell中手动提取文件(只是要确保)。
  3. 您可以尝试使用urllib(example
  4. 这也可能是服务器问题-以防万一。您可以尝试下载其他文件。