[英]Python urllib2: Reading content body even during HTTPError exception?
[英]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!
如预期的那样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.