我试图使用Python检索500mb文件,并且我有一个使用urllib.urlretrieve()
的脚本。我和下载站点之间似乎存在一些网络问题,因为此调用一直挂起而无法完成。但是,使用wget
来检索文件往往没有问题。 urlretrieve()
和wget
之间有什么区别可能会导致这种差异?Python之间的区别urllib.urlretrieve()和wget
11
A
回答
16
答案很简单。 Python的urllib
和urllib2
远不如它们可能的成熟和健壮。根据我的经验,甚至比wget更好的是cURL
。我已经编写了通过HTTP下载千兆字节文件的代码,文件大小从50 KB到2 GB以上不等。据我所知,cURL现在在这个星球上最可靠的软件是。我不认为python,wget甚至大多数web浏览器都可以在实现的正确性和健壮性方面与之匹配。在一个使用urllib2的现代python中,它可以做得非常可靠,但我仍然运行一个curl子进程,这绝对是稳定的。
陈述这个的另一种方式是cURL只做一件事,它比其他任何软件都做得更好,因为它有更多的开发和改进。 Python的urllib2
是可用和方便的,并且对于小到平均的工作负载而言足够好,但cURL在可靠性方面领先于其他用户。
此外,袅袅有许多选项调整可靠性行为,包括重试次数,超时值等
2
如果您正在使用:
page = urllib.retrieve('http://example.com/really_big_file.html')
要创建一个字符串,500MB可以很好税你的机器,使之缓慢,并导致连接超时的。如果是这样,你应该使用:
(filename, headers) = urllib.retrieve('http://...', 'local_outputfile.html')
这将不会税翻译。
值得注意的是urllib.retrieve()使用urllib.urlopen() which is now deprecated。
相关问题
- 1. python中的[]和[,,]之间的区别
- 2. Python - os.access和os.path.exists之间的区别?
- 3. basetring和types.StringType之间的python区别?
- 4. android sha224和python之间的区别sha224
- 5. python tkinter spinbox和optionmenu之间的区别
- 6. Python:!=和“不是”之间的区别
- 7. Python 3.5 - '//'和'int()'之间的区别
- 8. memcache和python字典之间的区别
- 9. Smalltalk和python之间的区别?
- 10. Python:`is`和`==`之间的区别?
- 11. ruby和python之间的语法区别?
- 12. '+ ='和'= +'之间的区别?
- 13. {!!之间的区别!!}和{{}}
- 14. ==和case之间的区别?
- 15. '#','%'和'$'之间的区别
- 16. | =和^ = css之间的区别
- 17. “%〜dp0”和“。\”之间的区别?
- 18. .eq之间的区别。和==
- 19. ==和.equals()之间的区别?
- 20. `%in%`和`==`之间的区别
- 21. Python日期时间和时间模块之间的区别
- 22. SPFile和PublishingPage类别之间的区别
- 23. System.Timers.Timer Enabled = true和.Start()之间的区别Enabled = true和.Start()之间的区别
- 24. Python中列表之间的区别
- 25. Python urllib.urlretrieve和用户代理
- 26. NSthread和NStimer和NSNotifcation之间的区别?
- 27. Java和C#和.NET之间的区别
- 28. sys.log()和console.log()和console.error()之间的区别?
- 29. $ .ajax()和$ .get()和$ .load()之间的区别
- 30. python tcp socketserver和windows和unix客户端之间的区别
好一点,虽然我使用的保存到一个文件中更长的版本。 – jrdioko 2010-05-06 18:36:40