使用python从命令行下载文件
我正在寻找一种通过HTTP下载文件的快速方法,使用命令行中的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头,如内容处置 我的解决方
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