Исключение прерывает цикл, поэтому вы можете обрабатывать его за пределами цикла.
try:
while True:
if s:
print s
s = i.next()
except StopIteration:
pass
Я полагаю, что проблема с вашим кодом заключается в том, что поведение break
внутри except
не определен. Обычно break
идет только на один уровень вверх, так, например, break
внутри try
переходит непосредственно к finally
(если он существует) из try
, но не из цикла.
Связанный PEP: http: // www.python.org/dev/peps/pep-3136 Связанный вопрос: Нарушение вложенных циклов