You can use the 'else' keyword outside the for loop: for <condition>: if <condition>: break else <some operations>
The execution will step inside the else branch if the for loop ends normally, i.e. without encountering a break keyword. Hope it helps. Regards, Matteo On Sun, Oct 17, 2010 at 6:58 PM, <tinn...@isbd.co.uk> wrote: > I'm writing some code that writes to a mbox file and want to retry > locking the mbox file a few times before giving up. I can't see a > really tidy way to implement this. > > Currently I have something like:- > > dest = mailbox.mbox(mbName, factory=None) > > for tries in xrange(3): > try: > dest.lock() > # > # > # Do some stuff to the mbox file > # > dest.unlock() > break # done what we need, carry on > > except mailbox.ExternalClashError: > log("Destination locked, try " + str(tries)) > time.sleep(1) > # and try again > > ... but this doesn't really work 'nicely' because the break after > dest.unlock() takes me to the same place as running out of the number > of tries in the for loop. I need a way to handle the case where we > run out of tries (and *haven't* done what we needed to do) separately > from the case where it worked OK. > > I can see all sorts of messy ways to handle this with a flag of some > sort but is there a proper elegant way of doing it? > > > -- > Chris Green > -- > http://mail.python.org/mailman/listinfo/python-list > -- Matteo Landi http://www.matteolandi.net/ -- http://mail.python.org/mailman/listinfo/python-list