Python - обработка pythoncom__ror в Python 3.2.2 - PullRequest
2 голосов
/ 09 февраля 2012

Я использую 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 .

Кто-нибудь знает, как правильно обрабатывать эти исключения pythoncom в Python 3.2.2?

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 09 февраля 2012

Вам просто нужно использовать современный синтаксис , за исключением - как , я думаю:

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 голосов
/ 11 января 2018

Я использую эту структуру (Python 3.5) -

попробовать: ... кроме исключения как e: print («ошибка в аргументе уровня», e) ... еще: ...

...