Arn*_*pta 60 python http urllib urllib2
我想抓住一个特定的http错误,而不是整个家庭中的任何一个..我想要做的是 -
import urllib2
try:
urllib2.urlopen("some url")
except urllib2.HTTPError:
<whatever>
Run Code Online (Sandbox Code Playgroud)
但我最终得到的是捕获任何类型的http错误,但我只想抓住指定的网页不存在!! 可能那是HTTP错误404 ..但我不知道如何指定只捕获错误404并让系统运行其他事件的默认处理程序..建议?
Tim*_*ker 107
只需捕获HTTPError
,处理它,如果它不是错误404,只需使用raise
重新引发异常即可.
请参阅Python教程.
所以你可以这样做:
from urllib.error import HTTPError
Run Code Online (Sandbox Code Playgroud)
Laz*_*zik 38
对于Python 3.x
import urllib.request
from urllib.error import HTTPError
try:
urllib.request.urlretrieve(url, fullpath)
except urllib.error.HTTPError as err:
print(err.code)
Run Code Online (Sandbox Code Playgroud)
蒂姆的回答在我看来具有误导性,尤其是当urllib2
没有返回预期的代码时。例如,这个错误将是致命的(信不信由你 - 下载 url 时这种错误并不少见):
AttributeError: 'URLError' 对象没有属性 'code'
快速,但也许不是最好的解决方案是使用嵌套的 try/except 块的代码:
import urllib2
try:
urllib2.urlopen("some url")
except urllib2.HTTPError as err:
try:
if err.code == 404:
# Handle the error
else:
raise
except:
...
Run Code Online (Sandbox Code Playgroud)
有关嵌套 try/except 块主题的更多信息python 中的嵌套 try/except 块是一种良好的编程习惯吗?
归档时间: |
|
查看次数: |
91697 次 |
最近记录: |