我正在尝试使用 Python 检索一个 500mb 的文件,并且我有一个使用 urllib.urlretrieve()
的脚本。我和下载站点之间似乎存在一些网络问题,因为此调用一直挂起并且无法完成。但是,使用 wget
检索文件往往没有问题。 urlretrieve()
和 wget
之间有什么区别会导致这种差异?
最佳答案
答案很简单。 Python 的 urllib
和 urllib2
远未达到应有的成熟和健壮。根据我的经验,甚至比 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/