通过遵循本教程http://docs.python.org/howto/urllib2.html#urlerror来学习urllib2,运行下面的代码可以得到与本教程不同的结果
import urllib2
req = urllib2.Request('http://www.pretend-o-server.org')
try:
urllib2.urlopen(req)
except urllib2.URLError, e:
print e.reason
Python解释器把这个吐回去
Traceback (most recent call last):
File "urlerror.py", line 8, in <module>
print e.reason
AttributeError: 'HTTPError' object has no attribute 'reason'
为什么会这样?
当我试图打印出code属性时,它工作得很好
import urllib2
req = urllib2.Request('http://www.pretend-o-server.org')
try:
urllib2.urlopen(req)
except urllib2.URLError, e:
print e.code
我得到属性错误的原因是因为我在使用OpenDNS。显然,即使你输入了一个虚假的URL,OpenDNS也会把它当作它存在。因此,在切换到Googles DNS服务器后,我得到了预期的结果,即:
另外,我还应该提到运行此代码的回溯,它是除try和except之外的所有内容
这是吗
哪个和蔼的人?来自IRC的python告诉我非常奇怪,然后问我是否在使用OpenDNS,我回答是的。所以他们建议我把它改成谷歌的,我就这么做了。
根据错误类型的不同,对象
e
可能携带也可能不携带该属性。在您提供的链接中有一个更完整的示例:
因为没有这样的属性。尝试:
你会变得很好:
相关问题 更多 >
编程相关推荐