10

我正在寻找一种通过 HTTP 下载文件的快速方法,使用命令行中的 python 单行器(类似于wgetor的功能curl)。这个想法是启用快速复制/粘贴以distutils在 Windows 上下载。

我知道一种解决方案(请参阅下面的答案)。我对考虑以下内容的其他解决方案感兴趣:

  • 简洁的
  • 大多数“pythonic”解决方案
  • 兼容python2和python3
  • 跨平台
  • 可以高效处理大文件
  • 没有依赖项(我们在这里获取,在这个阶段distutils我们不太可能访问)requests
  • 正确处理各种 HTTP 标头,例如Content-Disposition
4

2 回答 2

10

我能想出的最简单的解决方案是:

try:
    from urllib.request import urlretrieve
except ImportError:
    from urllib import urlretrieve

urlretrieve('http://example.org', 'outfile.dat')

urlretrieve负责将资源下载到本地文件并可以处理大文件。

但是,它会忽略Content-Disposition标头,如果您想考虑这一点,您需要自己使用urlopen和解析响应标头。Content-Disposition不是 HTTP 标准标头,所以我怀疑您会在 python http 库中找到对它的很多支持...

于 2013-06-18T08:29:24.680 回答
7

我的解决方案是:

python -c "import urllib; print urllib.urlopen('http://python-distribute.org/distribute_setup.py').read()" > distribute_setup.py
于 2013-06-18T07:28:34.003 回答