Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python从命令行下载文件_Python_Http_Download_Command Line Interface - Fatal编程技术网

使用python从命令行下载文件

使用python从命令行下载文件,python,http,download,command-line-interface,Python,Http,Download,Command Line Interface,我正在寻找一种通过HTTP下载文件的快速方法,使用命令行中的python一行程序(类似于wget或curl的功能)。其想法是在Windows上启用快速复制/粘贴以下载distutils 我知道一个解决方案(见下面我的答案)。我对其他考虑以下问题的解决方案感兴趣: 简明的 最“pythonic”的解决方案 与python2和python3兼容 跨平台 能够有效地处理大型文件 没有依赖项(我们在这里获取distutils,在这个阶段不太可能访问请求) 正确处理各种HTTP头,如内容处置 我的解决方

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

我知道一个解决方案(见下面我的答案)。我对其他考虑以下问题的解决方案感兴趣:

  • 简明的
  • 最“pythonic”的解决方案
  • 与python2和python3兼容
  • 跨平台
  • 能够有效地处理大型文件
  • 没有依赖项(我们在这里获取
    distutils
    ,在这个阶段不太可能访问
    请求
  • 正确处理各种HTTP头,如
    内容处置
我的解决方案是:

python -c "import urllib; print urllib.urlopen('http://python-distribute.org/distribute_setup.py').read()" > distribute_setup.py

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

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

urlretrieve('http://example.org', 'outfile.dat')
urlretrieve
负责将资源下载到本地文件,并可以处理大型文件


但是,它会忽略
内容处理
标题,如果您希望考虑到这一点,则需要使用
urlopen
并自己解析响应标题<代码>内容配置不是HTTP标准头文件,因此我怀疑您在python HTTP库中是否会找到对它的支持…

这对于大型文件来说是非常糟糕的,而且它只适用于python2。这并不是OP想要的。它没有的主要功能是通过CLI一行程序运行它。我将此标记为正确,因为它可以分为两个语句,一个用于python2,一个用于python3,可以处理大文件并作为一行程序运行http://python-distribute.org/distribute_setup.py“,“distribute_setup.py”)”python3:
python3-c“从urllib.request导入urlretrieve;URL检索('http://python-distribute.org/distribute_setup.py“,”distribute_setup.py“”
Dwurf的答案是正确的:最初的问题希望它是一个适合直接从命令行调用的单行程序.Content Disposition现在是一个标准。如果最近的python版本实现了它,我不知道。-->19.5.1 Content DispositionDistutils和setuptools已经合并。为了实现我最初的目标:
c:\python27\python.exe-c“from urllib import urlretrieve;URL检索('https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py“,'ez_setup.py')”&c:\python27\python.exe ez_setup.py