python - 如何 `pause` 和 `resume` 下载工作?

标签 python binary download

通常,从服务器下载文件是这样的:

fp = open(file, 'wb')
req = urllib2.urlopen(url)
for line in req:
    fp.write(line)
fp.close()

在下载过程中,只需完成下载过程即可。如果进程停止或中断,则下载进程需要重新开始。所以,我想让我的程序暂停和恢复下载,我该如何实现呢?谢谢。

最佳答案

Web 服务器必须支持 Range 请求 header 以允许暂停/恢复下载:

Range: <unit>=<range-start>-<range-end>

如果他/她想要检索指定的字节,则客户端可以使用 Range header 发出请求,例如:

Range: bytes=0-1024

在这种情况下,服务器可以用 200 OK 进行响应,表明它不支持 Range 请求, 或者它可以像这样用 206 Partial Content 响应:

HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Length: 1024
Content-Range: bytes 64-512/1024

Response body.... till 512th byte of the file

参见:

关于python - 如何 `pause` 和 `resume` 下载工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12243997/

相关文章:

python - 托盘图标的文本覆盖

python - 替换数据框中的值

serialization - 使用 Gob 以追加方式将日志写入文件

c++ - C++ 中的字符到二进制的转换 一次两个字符以获得 16 位二进制形式

javascript - 如何创建和下载要从 AngularJS 中的表中的数据创建的 PDF 和 docx 格式的文件?

Python 和/或 Perl VS bash

Python argparse 无法识别的参数

java - 顺序错误的二进制代码 - 如何正确移动它?

c# - WebReponse.GetStream 的奇怪行为

c++ - 从 Cpp 中的 URL 下载时获取空的 CSV