如何在不下载python的情况下从链接获取文件大小?

如何在不下载python的情况下从链接获取文件大小?,python,get,Python,Get,我有一个链接列表,我正试图获取其大小,以确定每个文件需要多少计算资源。是否可以通过get请求或类似的方式获取文件大小 以下是其中一个链接的示例: 谢谢如果您使用的是Python 3,您可以通过以下方式进行操作: 这将输出: Server: nginx Date: Mon, 18 Mar 2019 17:02:40 GMT Content-Type: application/octet-stream Content-Length: 578220087 Last-Modified: Tue, 21

我有一个链接列表,我正试图获取其大小,以确定每个文件需要多少计算资源。是否可以通过get请求或类似的方式获取文件大小

以下是其中一个链接的示例:


谢谢

如果您使用的是Python 3,您可以通过以下方式进行操作:

这将输出:

Server: nginx
Date: Mon, 18 Mar 2019 17:02:40 GMT
Content-Type: application/octet-stream
Content-Length: 578220087
Last-Modified: Tue, 21 Feb 2017 12:13:19 GMT
Connection: close
Accept-Ranges: bytes

Content-Length
属性是以字节为单位的文件大小。

您需要使用
HEAD
方法。该示例使用请求(
pip安装请求

#/usr/bin/env python
#显示远程文件的大小而不下载
导入系统
导入请求
#将URL作为第一个参数传递
response=requests.head(sys.argv[1],allow_redirects=True)
size=response.headers.get('content-length',-1)
#打印大小(MB)

print('\t{:要执行此操作,请使用HTTP HEAD方法,该方法只获取URL的头信息,而不像HTTP GET请求那样下载内容

$curl -I https://sra-download.ncbi.nlm.nih.gov/traces/sra46/SRR/005150/SRR5273887
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 18 Mar 2019 16:56:35 GMT
Content-Type: application/octet-stream
Content-Length: 578220087
Last-Modified: Tue, 21 Feb 2017 12:13:19 GMT
Connection: keep-alive
Accept-Ranges: bytes
文件大小位于“内容长度”标题中。在Python 3.6中:

>>> import urllib
>>> req = urllib.request.Request('https://sra-download.ncbi.nlm.nih.gov/traces/sra46/SRR/005150/SRR5273887', 
                                 method='HEAD')
>>> f = urllib.request.urlopen(req)
>>> f.status
200
>>> f.headers['Content-Length']
'578220087'

您可以看一看。
urlopen
将执行一个
GET
请求,并且实际上将下载文档。注意,如果远程服务器没有实现head,您仍然可以通过使用python请求库中的stream=True选项来实现类似的功能,如启用,然后在获得请求后直接关闭每个请求标题。
>>> import urllib
>>> req = urllib.request.Request('https://sra-download.ncbi.nlm.nih.gov/traces/sra46/SRR/005150/SRR5273887', 
                                 method='HEAD')
>>> f = urllib.request.urlopen(req)
>>> f.status
200
>>> f.headers['Content-Length']
'578220087'