如何在循环外停止循环?

时间:2012-05-12 07:39:16

标签: python loops try-catch except

所以我有一个for循环做某事,我需要在上面创建一个try-except语句(用于打开文件,如果找不到文件则异常),但是我得到一个语法错误它下面的循环(虽然它在我选错文件时确实给了我异常消息)。在得到异常后,我怎么能阻止程序运行循环?

我认为使用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 个答案:

答案 0 :(得分:1)

好吧,需要决定在找不到文件时你想要发生什么。

你可以选择简单地从函数返回:

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
  • 如果循环未找到任何匹配项,则返回空列表[]
  • 否则,将返回结果列表。

答案 1 :(得分:0)

根据我对您的问题的理解,每次遇到异常时,您都会将flag变量设置为1(或true)。然后简单地将loop包围在if-statement - if周围设置flag,然后不要执行loop,否则执行它。

或者,如果您(由于某种原因)确实需要进入循环,那么您可以选择在循环中使用if clause并使用break语句来突破或退出环。

有关break statement in python的更多信息,以及如何use it within a loop的示例。

答案 2 :(得分:0)

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  
...

答案 3 :(得分:0)

如果文件错误,我猜你要退出该功能。然后就可以了:

except:
  printNow("File not found.")
  return