我正在尝试为 Linux 创建一个“下载管理器”,它允许我使用多个线程下载一个文件。这就是我想要做的:
- 通过指定偏移量将要下载的文件分成不同的部分
- 将不同的部分下载到一个临时位置
- 将它们合并成一个文件。
第 2 步和第 3 步是可以解决的,我卡在了第 1 步。下载文件时如何指定偏移量?
使用类似open("/path/to/file", "wb").write(urllib2.urlopen(url).read())
的方式不允许我指定一个阅读的起点。除了这个还有其他选择吗?
最佳答案
要下载部分文件,只需像这样设置 Range
header
req = urllib2.Request(url)
req.headers['Range'] = 'bytes=%s-%s' % (start, end)
f = urllib2.urlopen(req)
但并非所有服务器都支持 Range
header 。大多数文件共享服务都没有。
关于python - 使用多个线程下载单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9701682/