在Python中确认成功的HTTP下载

时间:2009-12-02 16:19:17

标签: python wget

是否有一种简单可靠的方法来确认使用Python或WGET [大文件]成功下载网络下载?我想确保在执行其他操作之前完整下载文件。

2 个答案:

答案 0 :(得分:3)

鉴于许多(实际上,我相信)HTTP / 1.1标题部分,您可以期望实体主体有多长。如果您有这种期望,您可以决定是否获得了所有实体数据。有关详细信息,请参阅RFC 2616 section 4.4,但主要是:

  • 有时content-length会准确反映实体的长度
  • 有时可能没有实体主体,具体取决于响应代码或响应是否响应HEAD请求
  • 有时请求是转移编码的;并且HTTP数据中有一些标记表示“我现在已完成”(Transfer-Encoding: chunked
  • 有时,当连接关闭时,消息正式完成(在这种情况下,你无法区分获取整个内容并提前被切断)

在所有情况下,除了最后一个,你可以判断你是否有完整的东西。我不知道特别是任何工具(wget或现有的python库)是否为您提供了一个容易解释的信号,表明您的响应是否被截断。

答案 1 :(得分:1)

HTTP没有提供检查它的方法。

分发大文件时使用的方法是,在下载之后,计算文件的md5sum并将其与服务器提供的md5sum进行比较。

示例,这就是ubuntu如何分发和检查他们的CD下载。 https://help.ubuntu.com/community/HowToMD5SUM