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

2 投票
1 回答
1275 浏览
提问于 2025-04-17 14:18

我有一个很大的文件在某个地方(FTP/HTTP)。

我想要:

  1. 下载前面 N 个字节,
  2. 检查文件中嵌入的头部信息(看看版本是否不同),
  3. 然后决定是继续下载还是中止下载。

这绝对不是我想象中的简单任务(让我很惊讶)。即使是外部调用 wgetcurl 似乎也不是一个好办法(也许我忽略了正确的命令行选项)。

在 Python 中,怎么才能尽可能简单地做到这一点呢?

我在考虑为 ftp.retrbinary 写一个自定义处理器,一旦下载的块总和超过设定值就抛出异常,但在我看来这有点过于复杂。Python 代码应该是优雅的,对吧?

1 个回答

2

如果你只想查看网页的头部信息,可以发送一个HTTP Head请求,而不是GET请求。这样做会返回和GET请求一样的头部信息,但不会有消息主体。

HEAD方法和GET方法是一样的,唯一的区别是服务器不能在响应中返回消息主体。对于HEAD请求的响应中包含的HTTP头部信息,应该和GET请求的响应中发送的信息是一样的。

你可以在这里详细了解如何发送HEAD请求。


编辑:

如果你需要获取前N个字节的数据,可以使用urllib2,结合使用Range头部。格式是Range: bytes=0-N

撰写回答