Python: Continuar en bucle después de la excepción

Tengo el siguiente script (abajo). que devolverá el código de estado de las URL. Recorre un archivo y trata de conectarse a cada host. El único problema es que, obviamente, se detiene en bucle cuando alcanza una excepción.

He intentado numerosas cosas para poner el cómo en un bucle, pero en vano. ¿Alguna idea?

import urllib import sys import time hostsFile = "webHosts.txt" try: f = file(hostsFile) while True: line = f.readline().strip() epoch = time.time() epoch = str(epoch) if len(line) == 0: break conn = urllib.urlopen(line) print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n" except IOError: epoch = time.time() epoch = str(epoch) print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n" sys.exit() else: f.close() 

EDITAR:

Se me ha ocurrido esto mientras tanto, ¿algún problema con esto? (Todavía estoy aprendiendo: p) …

 f = file(hostsFile) while True: line = f.readline().strip() epoch = time.time() epoch = str(epoch) if len(line) == 0: break try: conn = urllib.urlopen(line) print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n" except IOError: print epoch + "connection unsuccessful" 

Gracias,

MHibbin

Podrías manejar la excepción donde se plantea. Además, use un administrador de contexto al abrir archivos, lo que hace que el código sea más simple.

 with open(hostsFile, 'r') as f: for line in f: line = line.strip() if not line: continue epoch = str(time.time()) try: conn = urllib.urlopen(line) print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n" except IOError: print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n" 

urllib.urlopen(line) manejar las excepciones urllib.urlopen(line) por urllib.urlopen(line) , algo como esto.

 try: f = file(hostsFile) while True: line = f.readline().strip() epoch = time.time() epoch = str(epoch) if len(line) == 0: break try: conn = urllib.urlopen(line) except IOError: print "Exception occured" pass except IOError: epoch = time.time() epoch = str(epoch) print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n" sys.exit() else: f.close() 

Podría intentar capturar la excepción dentro del bucle while como algo así.

 try: f = file(hostsFile) while True: line = f.readline().strip() epoch = time.time() epoch = str(epoch) if len(line) == 0: break try: conn = urllib.urlopen(line) print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n" except: epoch = time.time() epoch = str(epoch) print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n" except IOError: pass else: f.close()