Как остановить цикл, вне цикла?
Таким образом, у меня есть цикл for, который что-то делает, и я должен сделать оператор try-Кроме выше (используется при открытии файла, исключение, если файл не найден), однако я получаю синтаксическую ошибку с циклом for ниже это (хотя это дает мне сообщение об исключении, когда я выбираю неправильный файл). Как я мог остановить программу от запуска цикла после того, как я получил исключение?
Я думаю, что использование break может иметь какое-то отношение к этому, но не совсем уверен, как. Я думаю что-то вроде того, если мое сообщение об исключении будет напечатано, то сломается или что-то в этом роде. Это код вопроса:
def getIngredients(path, basename):
ingredient = []
filename = path + '\\' + basename
try:
file = open(filename, "r")
except:
printNow("File not found.")
for item in file:
if item.find("name") > -1:
startindex = item.find("name") + 5
endindex = item.find("<//name>") - 7
ingredients = item[startindex:endindex]
ingredient.append(ingredients)
del ingredient[0]
del ingredient[4]
for item in ingredient:
printNow(item)
По сути, поскольку я выбрал не тот файл, чтобы получить исключение, цикл for, который использует этот файл, выдает мне ошибку.
4 ответа
Ну, вам нужно решить, что вы хотите, если файл не найден.
Вы можете просто вернуться из функции:
def getIngredients(path, basename):
ingredient = []
filename = path + '\\' + basename
try:
file = open(filename, "r")
except IOError: # Never use a bare "except"! Be specific!
printNow("File not found.")
return
for item in file:
...
return ingredient
Таким образом, вызывающая сторона может проверить из возвращаемого значения, успешно ли завершена функция (если это имеет значение):
- Если ошибка произошла до запуска цикла,
None
возвращается - Если цикл не находит совпадений, пустой список
[]
возвращается - В противном случае список результатов возвращается.
Использовать break
в то время как на except
в цикле, чтобы выйти из этого.
>>> while True:
... try:
... x = int(raw_input("Please enter a number: "))
... except ValueError:
... print "Oops! That was no valid number. Try again..."
... break
...
Я предполагаю, что вы хотите выйти из функции, если файл неправильный. Тогда это будет сделано:
except:
printNow("File not found.")
return
Из того, что я понимаю по вашему вопросу, каждый раз, когда вы нажимаете исключение, вы устанавливаете flag
переменная к 1
(или же true
). Тогда просто окутай loop
вокруг if-statement
- if
flag
установлен, то не выполняйте loop
в противном случае выполните его.
В качестве альтернативы, если вам (по какой-то причине) необходимо войти в цикл, вы можете выбрать if clause
внутри цикла и использовать break
оператор, чтобы выйти из цикла или выйти из него.
Дополнительная информация об операторе break в python и пример его использования в цикле.