在Python中下载文件的前N个字节
我有一个很大的文件在某个地方(FTP/HTTP)。
我想要:
- 下载前面
N
个字节, - 检查文件中嵌入的头部信息(看看版本是否不同),
- 然后决定是继续下载还是中止下载。
这绝对不是我想象中的简单任务(让我很惊讶)。即使是外部调用 wget
或 curl
似乎也不是一个好办法(也许我忽略了正确的命令行选项)。
在 Python 中,怎么才能尽可能简单地做到这一点呢?
我在考虑为 ftp.retrbinary
写一个自定义处理器,一旦下载的块总和超过设定值就抛出异常,但在我看来这有点过于复杂。Python 代码应该是优雅的,对吧?
1 个回答
2
如果你只想查看网页的头部信息,可以发送一个HTTP Head请求,而不是GET请求。这样做会返回和GET请求一样的头部信息,但不会有消息主体。
HEAD方法和GET方法是一样的,唯一的区别是服务器不能在响应中返回消息主体。对于HEAD请求的响应中包含的HTTP头部信息,应该和GET请求的响应中发送的信息是一样的。
你可以在这里详细了解如何发送HEAD请求。
编辑:
如果你需要获取前N个字节的数据,可以使用urllib2
,结合使用Range头部。格式是Range: bytes=0-N
。