python - 使用多个线程下载单个文件

标签 python download urllib2 fedora

我正在尝试为 Linux 创建一个“下载管理器”,它允许我使用多个线程下载一个文件。这就是我想要做的:

  1. 通过指定偏移量将要下载的文件分成不同的部分
  2. 将不同的部分下载到一个临时位置
  3. 将它们合并成一个文件。

第 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/

相关文章:

python - 如何获得 minted 包来渲染具有可复制缩进的代码块?

python - Python 中算术运算符的重载链接

python - Qt Designer实时显示python脚本的输出

file - Datatable celleditor 中的 Primefaces 文件下载不起作用

visual-studio-2012 - Microsoft 是否已经永久删除了 Visual Studio 2012 Express 链接?

.net - 我可以在不安装 VS 或 SDK 的情况下下载并安装 gacutil.exe 吗?

python - 如何使 python urllib2 遵循重定向并保留 post 方法

python - 尝试调用 pyusb 中的后端模块时出错。 "AttributeError: ' 模块的对象没有属性 'backend' "

python - 使用 Python 获取 Wikipedia 文章

python - SSL 握手错误 : [Errno 1]