所以我有一个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循环会给我一个错误。
答案 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