在try/except块中多次尝试

5 投票
2 回答
3341 浏览
提问于 2025-04-16 10:44

我有一些Python代码,可以接受两个不同的文件名。我想做的事情是:先尝试第一个文件名,如果出现错误,就尝试第二个文件名。如果第二次尝试也失败了,那就抛出错误并处理这个问题。

所以基本的逻辑是:

first try this:
   f = file(name1)
if not, then try this
   f = file(name2)
else
   error()

我觉得我可以用嵌套的try/except块来实现这个,但这样似乎不是个好办法。而且,如果我想扩展到20个不同的文件名,嵌套的try/except块会变得非常复杂。

谢谢!

2 个回答

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'
19

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

for name in filenames:
    try:
        f = open(name)
        break
    except IOError:
        pass
else:
    # error

撰写回答