';请求';在python中,没有完全下载文件

';请求';在python中,没有完全下载文件,python,python-requests,Python,Python Requests,我正在使用python的请求库下载一个大约40mb大小的文件。但用我的代码,我得到的文件大小只有14mb。它并没有显示任何错误(下载文件之前很少出现警告) 这是我的密码: import requests file_url = "https://file_url.tar" user='username' passw='password' r = requests.get(file_url,auth=(user,passw),verify=False, stream = True) with op

我正在使用python的请求库下载一个大约40mb大小的文件。但用我的代码,我得到的文件大小只有14mb。它并没有显示任何错误(下载文件之前很少出现警告)

这是我的密码:

import requests
file_url = "https://file_url.tar"

user='username'
passw='password'
r = requests.get(file_url,auth=(user,passw),verify=False, stream = True)
with open("c.tar","wb") as code:
   for chunk in r.iter_content(chunk_size=1024):
       if chunk:
         code.write(chunk)
我也尝试过在没有“stream=True”的情况下使用。但这也不起作用

当我把这个网址在浏览器中,我得到了40 mb的完整文件

我在其他一些机器上尝试了这个脚本,它在那里工作得很好(我在这里也得到了这些警告)

以下是我收到的警告:

SNIMissingWarning:已发出HTTPS请求,但TLS的SNI(主题名称指示)扩展在此平台上不可用。这可能会导致服务器提供不正确的TLS证书,从而导致验证失败。有关详细信息,请参阅。 SNIMissingWarning

不安全平台警告:真正的SSLContext对象不可用。这会阻止urllib3正确配置SSL,并可能导致某些SSL连接失败。有关详细信息,请参阅。 不安全平台警告

不安全请求警告:正在发出未经验证的HTTPS请求。强烈建议添加证书验证。见: 不安全(警告)


但我不认为这会导致问题,因为如果我在其他系统上运行此脚本,我会收到这些警告,但脚本工作正常。

我使用的是urllib,而不是请求。

import urllib
url = "http://62.138.7.10/downloads/Bh2g2m.Bh2g.06.DR.M0viesC0unter.mp4?st=6MVZyTUL7X22v7ILOtB2XA&e=1502823147"
file_name = 'trial_video.mp4'
response = urllib.urlopen(url)
with open(file_name,'wb') as f:
    f.write(response.read())

希望这能帮助您

我遇到过类似的请求问题。请求对于处理精美的JSON api POST请求等非常有用,但对于普通文件下载来说,它是一个更好的工具。libcurl的复杂依赖性意味着您不应该尝试用pip安装pycurl;相反,您需要从发行版下载一份副本,或者从他们的站点使用一个预构建的win32模块


值得一提的是,当我使用文件下载请求时,我还设置了日志记录,并且出现了一些“断管”错误。可能是由于性能原因或其他原因导致请求提前断开连接?当我知道有一个可靠的替代解决方案时,我没有耐心去找出它。

我有一个类似的代码,但我使用chunk_size=8,你可以试试,但我不知道它是否有用。什么警告?始终将完整的错误消息(回溯)和有问题的警告(作为文本,而不是屏幕截图)。如果网络上存在一些问题,则可能会导致连接中断。如果您在下载之前知道文件大小,那么您就知道是否必须重复下载。您应该在header
content size
BTW:中设置文件大小,并进行尝试。注意,在python3中,文件大小是
urllib.request.urlopen(url)
是的,我在python3中几乎所有网络调用都使用requests模块