首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python 3中的urllib检索文件(资源)的头

使用Python 3中的urllib检索文件(资源)的头
EN

Stack Overflow用户
提问于 2015-10-23 19:19:36
回答 1查看 823关注 0票数 2

在Python3x中,如何在下载文件之前获得内容长度等标题?这

代码语言:javascript
复制
import urllib.request

aaa, bbb = urllib.request.urlretrieve(url, file_name)
bbb['Content-Length']
# or

ccc, ddd = urllib.request.urlretrieve(url)
ddd['Content-Length']

似乎它首先下载了整个文件,然后返回它的头。我认为是这样,因为这需要大量的时间,并且返回临时文件的名称(第二种情况)或真正的名称(第一种情况)。

还是我错了?

我想要的是先检索内容,然后根据某些条件下载、保存或不使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-23 19:37:47

HTTP有一个名为的特殊方法,它告诉服务器只发送头部(如果有的话包括Content-Length ),并在发送实际内容之前停止。

但是要告诉urllib使用HEAD方法,您应该切换到较新的urlopen函数:

代码语言:javascript
复制
from urllib.request import Request, urlopen
resp = urlopen(Request('http://httpbin.org/html', method='HEAD'))
headers = resp.info()
print(headers['Content-Length'])

确切地说,HTTP规范不需要Content-Length来响应HEAD请求(或者根本不需要),但是大多数服务器,特别是那些提供文件的服务器,都会包括它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33309914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档