Несколько попыток в блоке Try / Except - PullRequest
5 голосов
/ 27 января 2011

У меня есть некоторый код на Python, где я могу принять два разных имени файла, поэтому я хотел бы сделать что-то вроде попробовать первое имя файла, если есть исключение, тогда попробуйте второе имя файла, если вторая попытка не удалась, затем поднимитеисключение и обработайте ошибку.

Итак, основная логика такова:

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

Я почти уверен, что могу сделать это с помощью вложенных блоков try / исключением, но это не кажетсякак хорошее решение.Кроме того, если я захочу увеличить что-то до 20 разных имен файлов, то вложение блоков try / исключением будет очень грязным.

Спасибо!

Ответы [ 2 ]

19 голосов
/ 27 января 2011

Вы можете просто использовать цикл for:

for name in filenames:
    try:
        f = open(name)
        break
    except IOError:
        pass
else:
    # error
4 голосов
/ 27 января 2011

Вы можете сделать цикл из 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...