Try/Except块中的多个尝试

dev*_*vin 5 python exception

我有一些python代码,我可以接受两个不同的文件名,所以我想做一些像尝试第一个文件名,如果有异常然后尝试第二个文件名,如果第二次尝试失败,然后提出异常和处理错误.

所以基本逻辑是:

first try this:
   f = file(name1)
if not, then try this
   f = file(name2)
else
   error()
Run Code Online (Sandbox Code Playgroud)

我很确定我可以使用嵌套的try/except块来做到这一点,但这似乎不是一个好的解决方案.此外,如果我想扩展到20个不同的文件名之类的东西,那么嵌套try/except块会变得非常混乱.

谢谢!

Sve*_*ach 19

你可以简单地使用一个for循环:

for name in filenames:
    try:
        f = open(name)
        break
    except IOError:
        pass
else:
    # error
Run Code Online (Sandbox Code Playgroud)

  • 优秀的解决方案,是`for`循环中`else`子句的有用应用的一个很好的例子!我需要记住这一点. (6认同)

Ela*_*fer 5

你可以做一个类似的循环try ... except

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'
Run Code Online (Sandbox Code Playgroud)