Python: Continue looping after exception
exception, loops, python
Solution
You could handle the exception where it is raised. Also, use a context manager when opening files, it makes for simpler code.
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"
Problem
I have the following script (below). which will return the status code of URLs. It loops through a file and tries to connect to each host. Only problem is that it obviously stops looping when it reaches an exception. I have tried numerous things to put the how of it in a loop, but to no avail. Any thoughts? ``` 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() ``` EDIT: I've come up with this in the mean-time, any issues with this? (i'm still learning :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" ``` Thanks, MHibbin