python - Python urllib.urlretrieve() 和 wget 的区别

标签 python download wget urllib

我正在尝试使用 Python 检索一个 500mb 的文件,并且我有一个使用 urllib.urlretrieve() 的脚本。我和下载站点之间似乎存在一些网络问题,因为此调用一直挂起并且无法完成。但是,使用 wget 检索文件往往没有问题。 urlretrieve()wget 之间有什么区别会导致这种差异?

最佳答案

答案很简单。 Python 的 urlliburllib2远未达到应有的成熟和健壮。根据我的经验,甚至比 wget 更好的是 cURL。我编写的代码可以通过 HTTP 下载数 GB 的文件,文件大小从 50 KB 到 2 GB 以上不等。据我所知,cURL 是目前地球上用于此任务的最可靠的软件。我认为 python、wget,甚至大多数 Web 浏览器在实现的正确性和健壮性方面都无法与它匹敌。在以完全正确的方式使用 urllib2 的足够现代的 python 上,它可以变得非常可靠,但我仍然运行 curl 子进程,这绝对是坚如磐石。

另一种说法是,cURL 只做一件事,而且它比任何其他软件都做得更好,因为它已经进行了更多的开发和完善。 Python 的 urllib2易于维护且方便,并且适用于小型到普通工作负载,但 cURL 在可靠性方面遥遥领先。

此外,cURL 有许多选项来调整可靠性行为,包括重试次数、超时值等。

关于python - Python urllib.urlretrieve() 和 wget 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2777116/

相关文章:

Delphi:如何将互联网上的文本文件加载为字符串?

python - 在 Django 子类中而不是在基类中强制执行唯一的外键

python - 如何在 Python 中将带有变量的列表分配给变量

python - 基于 str.find 的 Pandas 切片字符串作为开始和停止的位置

wget - 使用不接受特殊字符的 axel 下载器下载带有用户名和密码的文件,例如; : < >

java - 命令 WGET 不起作用并发送错误

java - 检查远程服务器上的文件,如果存在,则下载它

访问 OrderedDict 记录时出现 python Unicode 解码错误

apache - 如何限制每个客户端与 Apache 服务器的连接?

javascript - 通过 POST 下载文件