Python urllib2 несколько операторов try для urlopen () - PullRequest
0 голосов
/ 27 мая 2010

Итак, я просто хочу, чтобы можно было запустить для по списку URL-адресов, если один не удается, я хочу продолжить, чтобы попробовать следующий.

Я пытался использовать следующее, но, к сожалению, он выдает и исключение, если первый URL не работает.

servers = ('http://www.google.com', 'http://www.stackoverflow.com')
for server in servers:
    try:
        u = urllib2.urlopen(server)
    except urllib2.URLError:
        continue
    else:
        break
else:
    raise

Есть идеи?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 мая 2010

Таким образом, проблема оказалась из-за ошибки пользователя. Я пробовал тупые домены, такие как «wegwegwe.com», но у меня никогда не было пригодного для использования домена в списке, поэтому в итоге он просто поднял исключение.

Ошибка пользователя.

0 голосов
/ 27 мая 2010
servers = ('http://www.google.com', 'http://www.stackoverflow.com')
for server in servers:
    try:
        u = urllib2.urlopen(server)
    except urllib2.URLError:
        continue
    else:
        break
else:
    raise

Этот код выходит из цикла, если URL-соединение не вызывает ошибку (else: break часть).

Вы хотите, чтобы 2-й использовался только , если первый не удался?

edit: я думал, что else: после цикла for должен raise из-за break, но в моем быстром тесте это не сработало ... потому что мое понимание для / иначе был не прав

...