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

在python中下载文件的前N个字节,python,http,ftp,download,Python,Http,Ftp,Download,我在某处有一个大文件(FTP/HTTP) 我想 首先下载N字节 检查嵌入到文件中的头文件(版本是否不同) 然后决定是继续下载还是中止下载 这绝对不是我想象的那么简单的任务(令我惊讶)。即使从外部调用wget/curl似乎也不是一个好的解决方案(可能我忽略了正确的命令行选项) 如何在Python中尽可能简单地实现这一点 我正在考虑一个用于ftp.retrbinary的自定义处理程序,它将在块的总和超过定义的值时立即引发异常,但在我看来,这太过分了。Python代码应该是优雅的,对吗?如果只想检查标

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

我想

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

    如何在Python中尽可能简单地实现这一点


    我正在考虑一个用于
    ftp.retrbinary
    的自定义处理程序,它将在块的总和超过定义的值时立即引发异常,但在我看来,这太过分了。Python代码应该是优雅的,对吗?

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

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

    可以发送一个详细的头部


    编辑:


    如果您确实需要前N个字节,可以与
    范围:bytes=0-N

    一起使用,您只需要标题吗?看一看,;它可以让您流式处理请求,您可以只获取头,然后关闭连接(如果需要)。如果你想的话,也可以读取响应正文的前N个字节。Dikei的可能副本:我已经看到了答案,但它不包括FTP,我也需要这个。听起来Miro更感兴趣的是文件中嵌入的头,而不是HTTP头。@MiroKropacek在这种情况下,你可以使用
    范围
    头,与GET结合使用。