Python urllib2 HTTPError 异常没有给出所需的输出
Python urllib2 HTTPError exception doesn't give desired output
我正在使用 urllib2 获取内容为单行号的页面,然后将该数字与 ver
值进行比较。这是我的代码片段:
import urllib2
ver = '1.1'
p = urllib2.urlopen('http://www.someurl.com/text')
try:
p
for line in p:
if line == ver:
print "Current version: %s" % ver
print "Latest version: %s" % line
print "It's up to date."
else:
print "Current version: %s" % ver
print "Latest version: %s" % line
print "Needs updating."
except urllib2.URLError:
print "Error, could not retrieve version number!"
except urllib2.HTTPError:
print "Error, could not retrieve version number!"
我更改了几次 URL 以查看输出会如何变化。我添加了 URLError
异常作为对根本无法连接到页面的响应,它工作正常。输出是 Error, could not retrieve version number!
但是,当将 p
更改为某些返回 HTTP 404 错误的 URL 时,添加 HTTPError
异常并没有帮助。这是输出:
Traceback (most recent call last):
File "/usr/local/bin/script", line 1337, in <module>
p = urllib2.urlopen('http://www.someurl.com/text')
File "/.../urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
...
similar error lines
...
urllib2.HTTPError: HTTP Error 404: Not Found
如何让 HTTPError 起作用?我发现一个异常有效而另一个异常无效,这很奇怪,除非我做的事情完全错误。
好的,我解决了我的问题。问题是,正如 Peter Wood 在评论中指出的那样,我的 URL 在 try/except
块的外面,所以我所要做的就是忘记 p
就这样做:
try:
for line in urllib2.urlopen('http://www.someurl.com/text'):
if line == ver:
#...
现在输出如预期的那样 Error, could not retrieve version number!
。
我正在使用 urllib2 获取内容为单行号的页面,然后将该数字与 ver
值进行比较。这是我的代码片段:
import urllib2
ver = '1.1'
p = urllib2.urlopen('http://www.someurl.com/text')
try:
p
for line in p:
if line == ver:
print "Current version: %s" % ver
print "Latest version: %s" % line
print "It's up to date."
else:
print "Current version: %s" % ver
print "Latest version: %s" % line
print "Needs updating."
except urllib2.URLError:
print "Error, could not retrieve version number!"
except urllib2.HTTPError:
print "Error, could not retrieve version number!"
我更改了几次 URL 以查看输出会如何变化。我添加了 URLError
异常作为对根本无法连接到页面的响应,它工作正常。输出是 Error, could not retrieve version number!
但是,当将 p
更改为某些返回 HTTP 404 错误的 URL 时,添加 HTTPError
异常并没有帮助。这是输出:
Traceback (most recent call last):
File "/usr/local/bin/script", line 1337, in <module>
p = urllib2.urlopen('http://www.someurl.com/text')
File "/.../urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
...
similar error lines
...
urllib2.HTTPError: HTTP Error 404: Not Found
如何让 HTTPError 起作用?我发现一个异常有效而另一个异常无效,这很奇怪,除非我做的事情完全错误。
好的,我解决了我的问题。问题是,正如 Peter Wood 在评论中指出的那样,我的 URL 在 try/except
块的外面,所以我所要做的就是忘记 p
就这样做:
try:
for line in urllib2.urlopen('http://www.someurl.com/text'):
if line == ver:
#...
现在输出如预期的那样 Error, could not retrieve version number!
。