Форум сайта python.su
ActivePython 2.5, WinXP
При исполнении консольных скриптов иногда на консоль (cmd.exe) выдаются ошибки кракозябрами, типа:
pywintypes.com_error: (-2147221020, ‘\xd1\xe8\xed\xf2\xe0\xea\xf1\xe8\xf7\xe5\xf1\xea\xe0\xff \xee\xf8\xe8\xe1\xea\xe0’, None, None)Как это расшифровать (интересует способ, а не конкретный текст)?
Офлайн
Перехвати исключение и выведи его текст.
try: # some code goes here except pywintypes.com_error, e: print e.message.decode('cp1251').encode('cp866')
Офлайн
Нет, так не получается. Например:
# -*- coding: cp1251 -*-
import pywintypes, win32com.client
try:
conn = win32com.client.Dispatch("какая-то глупость")
except pywintypes.com_error, e:
print e.message.decode('cp1251').encode('cp866')
Офлайн
а у меня дает такую ошибку на сам print:
AttributeError: com_error instance has no attribute ‘message’
Офлайн
а вот так работает, правда у меня Python 2.4:
import pywintypes, win32com.client
try:
conn = win32com.client.Dispatch(“какая-то глупость”)
except pywintypes.com_error, e:
print e.decode('cp1251').encode('cp866')
Офлайн
Посмотри пример обработки ошибок pywintypes.com_error здесь.
Офлайн
bialixДа, это реально работает :). Спасибо!
а вот так работает, правда у меня Python 2.4:
import pywintypes, win32com.client
try:
conn = win32com.client.Dispatch(“какая-то глупость”)
except pywintypes.com_error, e:
print e.decode('cp1251').encode('cp866')
Офлайн
Что всё же означают такие кракозябры? Если это коды символов, то каких?
Офлайн
это CP1251 – дефолтная кодировка на русской винде.
Офлайн
Похоже на “синтаксическая ошибка”…
Офлайн