2012-02-08 21 views
1

私はPython 3.2.2を使用していて、Tkinterインターフェイスを構築してActive Directoryを更新しています。私はpythoncom.com_error例外を処理しようとするのに問題があります。Python - Python 3.2.2でのpythoncom.com_errorの処理

私はここからいくつかのコードをつかん: http://code.activestate.com/recipes/303345-create-an-account-in-ms-active-directory/

をしかし、私が発生した例外を処理(ストレート上記サイトから)以下を使用します。

except pythoncom.com_error,(hr,msg,exc,arg): 

このコードは、多くのと一致しています私はこれらの例外を処理するサイトを見てきましたが、Python 3.2.2では、 "pythoncom.com_error"の後にカンマを含めると構文エラーが発生します。コンマを削除するとプログラムが起動しますが、例外が発生すると、 "hr"、 "msg"などがグローバル変数として定義されていないため、例外が発生します。

括弧内のカンマとすべてのビットを削除した場合、実際にエラーメッセージが表示されるように、例外で何が起こっているのかわかりません広告。

Python 3.2.2でこれらのpythoncom例外を適切に処理する方法を知っている人はいますか?

ありがとうございます!

答えて

2

あなたは単に私が思うに、現代のexcept-as構文を使用する必要があります。

import pythoncom 
import win32com 
import win32com.client 

location = 'fred' 
try: 
    ad_obj=win32com.client.GetObject(location) 
except pythoncom.com_error as error: 
    print (error) 
    print (vars(error)) 
    print (error.args) 
    hr,msg,exc,arg = error.args 

私のため

(-2147221020, 'Invalid syntax', None, None) 
{'excepinfo': None, 'hresult': -2147221020, 'strerror': 'Invalid syntax', 'argerror': None} 
(-2147221020, 'Invalid syntax', None, None) 

を生成する[私は引数の順序が何も実際にあるかどうかわからないよないが見えるので、私はおそらく明示的にキーを参照します。誰か他の人は確かに知っているかもしれない]

+0

ありがとうございました。私が本当に望んでいたのは、上記のコードでは最終的に「exc」になる特定の部分でした。 は、私が使用:エラーとしてpythoncom.com_error除く : 時間、MSG、EXC、引数= error.args にErrorMessage = EXC [2] おかげで再び! – user1198460

0

を私が使用してこのような構造(パイソン3.5) -

試してみてください。電子などの例外を除いて ... : プリント( "レベル引数に誤り"、E) ... else: ...