Python 在Try/Except块中多次尝试
我有一些python代码,我可以接受两个不同的文件名,所以我想尝试第一个文件名,如果出现异常,那么尝试第二个文件名,如果第二次尝试失败,那么引发异常并处理错误 因此,基本逻辑是:Python 在Try/Except块中多次尝试,python,exception,Python,Exception,我有一些python代码,我可以接受两个不同的文件名,所以我想尝试第一个文件名,如果出现异常,那么尝试第二个文件名,如果第二次尝试失败,那么引发异常并处理错误 因此,基本逻辑是: first try this: f = file(name1) if not, then try this f = file(name2) else error() 我很确定我可以用嵌套的try/except块来实现这一点,但这似乎不是一个好的解决方案。另外,如果我想放大到20个不同的文件名,那么t
first try this:
f = file(name1)
if not, then try this
f = file(name2)
else
error()
我很确定我可以用嵌套的try/except块来实现这一点,但这似乎不是一个好的解决方案。另外,如果我想放大到20个不同的文件名,那么try/except块的嵌套将变得非常混乱
谢谢 您可以简单地使用
for
循环:
for name in filenames:
try:
f = open(name)
break
except IOError:
pass
else:
# error
你可以做一个
循环,试试。。。除了像这样的
:
for f_name in names:
try:
f = open(f_name, 'r')
# do something
break # Exit from the loop if you reached this point
except:
print 'error, going to try the next one'
非常好的解决方案,也是在
for
循环中有用地应用else
子句的一个非常好的示例!我需要记住这一点。我喜欢这个解决方案,尤其是因为它可以轻松扩展到两个以上的文件。好吧,这基本上就是我要问的问题。类似的:我不明白为什么这个被否决了,它和另一个是同一个解决方案,并且在另一个一分钟内发布。