繁体   English   中英

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! 如预期的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM