有没有一种方法可以在不下载Python中的url内容的情况下获取响应头?

有没有一种方法可以在不下载Python中的url内容的情况下获取响应头?,python,request,http-headers,python-requests,response,Python,Request,Http Headers,Python Requests,Response,我正在使用Python编写一个管理器,在一定条件下下载一些文件。问题是要对响应头执行条件 下面的例子是我现在所做工作的简化版本。我首先下载文件,然后测试文件头中包含的文件名是否在前面定义的列表中 我想知道是否有一种方法可以在不下载内容的情况下获得回复,这在我的真实案例中需要花费大量时间 import requests # The line below download the file, but I'd like not to do it. req = requests.get('http:/

我正在使用Python编写一个管理器,在一定条件下下载一些文件。问题是要对响应头执行条件

下面的例子是我现在所做工作的简化版本。我首先下载文件,然后测试文件头中包含的文件名是否在前面定义的列表中

我想知道是否有一种方法可以在不下载内容的情况下获得回复,这在我的真实案例中需要花费大量时间

import requests

# The line below download the file, but I'd like not to do it.
req = requests.get('http://some_url.com/some_file')

# Get the name of the file to test if it's the right file.
r = re.search(r'filename="(.*)";', req.headers['Content-Disposition'])

filename = None

# If the filename is present in the headers...
if r.groups():
    filename = r.groups()[0]

# If the filename is in an authorized list...
if filename in [...]:
   # Process req.content

您可以使用
requests.head()
而不是
requests.get()

警告:这将发送一个
head
请求,该请求应该与
get
请求相同,只是没有返回任何正文。这取决于服务器是否正确处理它;它可以为
请求返回不同的头。此外,如果您决定使用
GET
请求下载实际内容,则会产生两个HTTP请求(但这不应该是一个诽谤者)。@eddiem有这么简单吗?:)我不同意这是重复的,另一个问题是询问回复内容中的html
,而不是原始标题。我也不同意这是重复的。虽然由于问题已结束,我无法在此处正确发布解决方案,但答案在requests文档中:将
stream
参数传递给
get
调用,该调用将下载标题,但推迟内容提取。