2013-02-16 10 views
15

私は除いて、私の上に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 

誰もが任意のアイデアを持っていますか?

+1

「getopt.GetoptError as e」を試してみませんか? – cnicutar

+1

同じ問題に関するこのディスカッションを確認してください: http://stackoverflow.com/questions/2535760/python-try-except-comma-vs-as-in-except –

答えて

5

あなたの構文は、あなたがexcept getopt.GetoptError as e:代わりのexcept getopt.GetoptError, e:

+1

これは以前のバージョンのPythonでは正しい構文でしたしかし、。 – tripleee

28

あなたがのpython3を使用してのpython3 the raise syntax no longer accepts comma-separated arguments中に書かれているはずの例外

を引くため無効です。

使用as代わり:

except getopt.GetoptError as e: 

このフォームは、また、2.6と2.7との下位互換性があります。

+0

よろしくお願い致します。それは今働いている=) – lagarkane

+0

OPがPython <2.6と互換性のあるコードを望むなら、彼は 'getopt.GetoptError:を除いて'を使用し、 'sys.exc_info()'を使ってエラー情報を取得するべきです。 – Bakuriu

関連する問題