Что не так с моим исключением?

У меня ошибка SyntaxError, кроме:

try:
    opts, args = getopt.getopt(sys.argv[1:], 'P:D:H:d:u:p:nvhmJi:c:Ml:TB:',
            ['host=', 'port=', 'directory=', 'user=', 'password=',
             'daemon=', 'noauth', 'help', 'verbose', 'mysql', 
             'icounter=', 'config=', 'nolock', 'nomime', 'loglevel', 'noiter',
             'baseurl='])
except getopt.GetoptError, e:
    print usage
    print '>>>> ERROR: %s' % str(e)
    sys.exit(2)

Я получаю сообщение об ошибке:

File "main.py", line 199

except getopt.GetoptError, e:

SyntaxError: invalid syntax

У кого-нибудь есть идеи?


person lagarkane    schedule 16.02.2013    source источник
comment
Попробовать except getopt.GetoptError as e?   -  person cnicutar    schedule 16.02.2013
comment
Ознакомьтесь с этим обсуждением той же проблемы: stackoverflow.com/questions/2535760/   -  person Forhad Ahmed    schedule 16.02.2013


Ответы (2)


Вы используете python3, а в python3 синтаксис повышения больше не принимает аргументы, разделенные запятыми.

Вместо этого используйте as:

except getopt.GetoptError as e:

Эта форма также обратно совместима с версиями 2.6 и 2.7.

person Community    schedule 16.02.2013
comment
Хорошо спасибо! сейчас работает =) - person lagarkane; 16.02.2013
comment
Я бы добавил, что если OP хочет код, совместимый с python ‹2.6, он должен использовать except getopt.GetoptError:, а затем получить информацию об ошибке с помощью sys.exc_info() - person Bakuriu; 16.02.2013

Ваш синтаксис недействителен для перехвата исключения

Вы должны были написать except getopt.GetoptError as e: вместо except getopt.GetoptError, e:

person Abhijit    schedule 16.02.2013
comment
Однако это был правильный синтаксис в более ранних версиях Python. - person tripleee; 16.02.2013