3

私は Python 3.2.2 を使用しており、Tkinter インターフェイスを構築して Active Directory の更新を行っています。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」などがグローバル変数として定義されていないため、他の例外が発生します。

コンマと括弧内のすべてのビットを削除すると、AD からの実際のエラー メッセージを渡すことができるように、例外で何が起こっているかを正確に確認できないことを除いて、すべて正常に機能します。

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

前もって感謝します!

4

2 に答える 2

7

あなたは単に現代の例外を使用する必要があります-構文として、私は思います:

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)

私にとっては[argsの順序が実際にどのように見えるかはわかりませんが、おそらくキーを明示的に参照します。他の誰かが確かに知っているかもしれません。]

于 2012-02-08T23:59:29.097 に答える