在python中下载文件的前N个字节

时间:2013-01-31 10:38:51

标签: python http ftp download

我某处有一个大文件(FTP / HTTP)。

我想

  1. 首先下载N个字节,
  2. 检查嵌入文件的标题(版本是否不同)
  3. 然后决定是继续还是中止下载。
  4. 这绝对不是我想象的那么简单的任务(令我惊讶)。即使从外部调用wget / curl也似乎不是一个好的解决方案(也许我忽略了正确的命令行选项)。

    如何在Python中尽可能简单地完成这项工作?

    我正在考虑ftp.retrbinary的自定义处理程序,只要块的总和超过定义的值就会引发异常,但这在我看来太过分了。 Python代码应该很优雅,对吧?

1 个答案:

答案 0 :(得分:2)

如果您只想检查标题,请发送 HTTP Head ,而不是GET。 它将返回与GET相同的标题,没有消息正文。

  

HEAD方法与GET相同,只是服务器不能   在响应中返回一个消息体。元信息包含   在HTTP头中响应HEAD请求应该是相同的   响应GET请求而发送的信息。

HEAD可以按详细here发送。


修改

如果确实需要前N个字节,可以将urllib2Range header. Range: bytes=0-N结合使用。