【问题标题】:how to get file size without downloading it in python requests如何获取文件大小而不在python请求中下载它
【发布时间】:2020-10-02 19:59:32
【问题描述】:

您肯定使用过下载管理器。他们无需下载即可检测并显示文件的长度

我知道我可以做到:


import requests
resp = requests.get("https://Whereever.user.wants.com/THEFILE.zip")
print(f"your file has {resp.headers['content-length'] \ 1048576}.")
...

get 下载内容(THEFILE)。所以我可以告诉下载后使用长度。 在python中下载之前如何做到这一点?

感谢详细解答

【问题讨论】:

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


【解决方案1】:

不要使用GET请求,而是使用HEAD请求:

resp = requests.request('HEAD', "https://Whereever.user.wants.com/THEFILE.zip")

如果使用 HTTP GET 方法请求 HEAD 请求的 URL,则 HTTP HEAD 方法请求将返回的标头。在您的情况下,如果 URL 产生大量下载,HEAD 请求将读取其 Content-Length 标头以获取文件大小,而无需实际下载文件。

【讨论】:

  • 我看到有些服务器不支持 HEAD(有人对我这么说)我在写吗??
  • 也许有些人不这样做,但这通常只是愚蠢的,因为它会杀死通常基于标头的客户端缓存,这意味着服务器的流量/负载更高。您可以假设任何非蹩脚的服务器都知道并支持 HEAD。
  • 酷。在我的评论中很好地回答了我的问题。谢谢兄弟
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 2013-05-17
  • 2010-09-05
  • 1970-01-01
相关资源
最近更新 更多