Pywintypes com error python

problems with python: pywintypes.com_error Matt Smith I am VERY new to python , 3 days to be exact, but as I have been programming competently in Perl and C/C++ for a while now, I thought it would be a simple case of relearning the syntax, and in many ways it has been just that. […]

Содержание

  1. problems with python: pywintypes.com_error
  2. Matt Smith
  3. Python-сообщество
  4. Уведомления
  5. #1 Сен. 14, 2016 12:26:28
  6. Не удаётся подключиться к COM объекту
  7. #2 Сен. 23, 2016 07:47:23
  8. Не удаётся подключиться к COM объекту
  9. #3 Сен. 23, 2016 08:00:13
  10. Не удаётся подключиться к COM объекту
  11. #4 Сен. 23, 2016 08:11:39
  12. Не удаётся подключиться к COM объекту
  13. #5 Сен. 23, 2016 08:23:11
  14. Не удаётся подключиться к COM объекту
  15. #6 Сен. 23, 2016 08:46:18
  16. Не удаётся подключиться к COM объекту
  17. #7 Сен. 23, 2016 09:03:11
  18. Не удаётся подключиться к COM объекту
  19. #8 Сен. 23, 2016 09:10:20
  20. Не удаётся подключиться к COM объекту
  21. #9 Сен. 23, 2016 09:12:15
  22. Не удаётся подключиться к COM объекту
  23. #10 Сен. 23, 2016 09:18:37
  24. Не удаётся подключиться к COM объекту
  25. Python-сообщество
  26. Уведомления
  27. #1 Дек. 12, 2008 07:03:31
  28. С чем связана ошибка pywintypes.com_error:
  29. #2 Дек. 12, 2008 07:15:43
  30. С чем связана ошибка pywintypes.com_error:
  31. #3 Дек. 12, 2008 07:43:31
  32. С чем связана ошибка pywintypes.com_error:
  33. #4 Дек. 12, 2008 08:01:18
  34. С чем связана ошибка pywintypes.com_error:
  35. #5 Дек. 12, 2008 08:05:36
  36. С чем связана ошибка pywintypes.com_error:
  37. Python-сообщество
  38. Уведомления
  39. #1 Дек. 12, 2008 08:59:27
  40. С чем связана ошибка pywintypes.com_error:
  41. #2 Дек. 12, 2008 09:50:11
  42. С чем связана ошибка pywintypes.com_error:
  43. #3 Дек. 12, 2008 10:22:00
  44. С чем связана ошибка pywintypes.com_error:
  45. #4 Дек. 12, 2008 10:25:24
  46. С чем связана ошибка pywintypes.com_error:
  47. #5 Дек. 12, 2008 10:27:55
  48. С чем связана ошибка pywintypes.com_error:
  49. #6 Дек. 12, 2008 10:29:04
  50. С чем связана ошибка pywintypes.com_error:
  51. #7 Дек. 12, 2008 10:31:43
  52. С чем связана ошибка pywintypes.com_error:
  53. #8 Дек. 12, 2008 10:51:03
  54. С чем связана ошибка pywintypes.com_error:
  55. #9 Дек. 12, 2008 11:04:20
  56. С чем связана ошибка pywintypes.com_error:
  57. #10 Дек. 12, 2008 11:18:21
  58. С чем связана ошибка pywintypes.com_error:
  59. Python-сообщество
  60. Уведомления
  61. #1 Сен. 23, 2016 12:48:57
  62. Не удаётся подключиться к COM объекту
  63. #2 Сен. 23, 2016 13:23:13
  64. Не удаётся подключиться к COM объекту
  65. #3 Сен. 23, 2016 21:12:58
  66. Не удаётся подключиться к COM объекту
  67. #4 Окт. 6, 2016 10:39:19
  68. Не удаётся подключиться к COM объекту
  69. #5 Окт. 6, 2016 11:09:23
  70. Не удаётся подключиться к COM объекту
  71. #6 Окт. 6, 2016 11:16:16
  72. Не удаётся подключиться к COM объекту
  73. #7 Окт. 6, 2016 11:23:19
  74. Не удаётся подключиться к COM объекту
  75. #8 Окт. 6, 2016 11:34:15
  76. Не удаётся подключиться к COM объекту
  77. #9 Окт. 6, 2016 11:43:30
  78. Не удаётся подключиться к COM объекту
  79. #10 Окт. 6, 2016 11:52:39
  80. Не удаётся подключиться к COM объекту

problems with python: pywintypes.com_error

Matt Smith

I am VERY new to python , 3 days to be exact, but as I have been
programming competently in Perl and C/C++ for a while now, I thought
it would be a simple case of relearning the syntax, and in many ways
it has been just that.

However last night as I was just about to leave work, when I came
across an error message I had never seen before. Not only that but it
appears that there is very little in the way of help in all the usual
sources of information on the internet (i.e. newsgroups and forums
and the like) So to the problem at hand.

I am calling a program called v2wreg (its a program for interfacing
with the registers/parallel port, used, unfortunatly i think
exclusivly, by the company I work for), I can load the program fine,
but when I come to use any of its advanced featurs i.e.
SetDeviceAddress or ReadRegister I get the same type of error message.

i.e.
File » «, line 2, in MakeConnection
pywintypes.com_error: (-2147352571, ‘Type mismatch.’, None, 1)

When I commented out the first line I knew was giving an error, I got
the another pywintypes.com_error from the next line in my code to use
a feature of v2wreg?

Are these errors connected? I have looked about abit and there has
been some mention of programs not being registered properly
generating pywintypes.com_error errors is there anyway I can check
what is meant to be registered?

Any light anyone could spread on this subject would be very helpful

Thanks in advance,

Matt Smith,
2nd year Electronic & Electrical Engineer at Edinburgh University.

Источник

Python-сообщество

Уведомления

#1 Сен. 14, 2016 12:26:28

Не удаётся подключиться к COM объекту

Пишу программу на Python,

Windows 7 Профессиональная 64bit

Запускаю, после чего, он на меня так ругается:

Регистрировал компонент так:

Регистрация прошла успешно

Почему он не зарегистрирован?
VBA excel без проблем к нему коннектится

#2 Сен. 23, 2016 07:47:23

Не удаётся подключиться к COM объекту

Подскажите хотя бы, что значит для питоновской библиотеки win32com, что класс не зарегистрирован?
Где должна в реестре быть запись о классе, что бы он так сказать прошёл регистрацию?

Отредактировано andman (Сен. 23, 2016 07:48:37)

#3 Сен. 23, 2016 08:00:13

Не удаётся подключиться к COM объекту

А у меня встречный вопрос. Интересно важно какая у вас архитектура? Питон у вас x64 а batchx.dll вроде как 32. Я помнится давным давно когда через opc общался с различными штуками из питона, боролся с этим. Может в этом дело? Не спец по com так что не судите строго.

p.s.
Мой опыт общения с com показал что это крайне неудобный и медленный способ организации связи с приложениями. Поэтому наверное тут никто вам и не отвечает. COM это последнее что будут использовать питон программисты 🙂

Отредактировано doza_and (Сен. 23, 2016 08:03:20)

#4 Сен. 23, 2016 08:11:39

Не удаётся подключиться к COM объекту

doza_and
А у меня встречный вопрос. Интересно важно какая у вас архитектура? Питон у вас x64 а batchx.dll вроде как 32. Я помнится давным давно когда через opc общался с различными штуками из питона, боролся с этим. Может в этом дело? Не спец по com так что не судите строго.p.s. Мой опыт общения с com показал что это крайне неудобный и медленный способ организации связи с приложениями. Поэтому наверное тут никто вам и не отвечает. COM это последнее что будут использовать питон программисты

Не совсем понял, на счёт архитектуры, то что я указал win7 64 bit, это не то?
Кстати пробовал я и питон 32 бит — всё тоже самое.

А на счёт СОМ, у меня выбора особо то и нет. У меня есть среда разработки STEP7(на которой мне нужно создать конечный програмный продукт), которая умеет общаться только через СОМ.

Отредактировано andman (Сен. 23, 2016 08:13:15)

#5 Сен. 23, 2016 08:23:11

Не удаётся подключиться к COM объекту

p.s.
Мой опыт общения с com показал что это крайне неудобный и медленный способ организации связи с приложениями. Поэтому наверное тут никто вам и не отвечает. COM это последнее что будут использовать питон программисты

Зато до чертиков универсальный и разжеванный и довольно много девайсов работает по нему- потому я не был бы так категоричен.

Весьма не просто разобраться в вашей проблеме не имея нужных данных
Однако, сколько я уже топиков перечитал в своей жизни на разных ресурсах — везде где есть слово win32….. пожизненный рак.

И не пишите сразу весь код — для начала сделайте простой запрос ответ — убедитесь что есть связь! А вот дальше уже можно думать

Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

#6 Сен. 23, 2016 08:46:18

Не удаётся подключиться к COM объекту

Вы наверное меня неправильно поняли.
COM — Component Object Model, а не последовательные порт
Опишу суть того, что я делаю, и что мне надо.

Я занимаюсь программированием промышленных контроллеров, в частности Siemens S7-300/400.
Среда разработки для этих контроллеров является STEP7 (https://ru.wikipedia.org/wiki/Simatic_Step_7)
Каждый раз писать программу для контроллера вручную — просто лень, так как структура программы практически одна и таже. На текущий момент, я делаю так: структурирую нужным мне образом данные тех-задания в excel таблицу, далее эту таблицу обрабатываю с помощью VBA, генерю тем самым исходники для step7, с помощью СОМ вставляю их прямо в среду разработки STEP7, так же с помощью СОМ компилю их и — профит!

Но сами понимаете, VBA по сравнению с python, это как сравнивать запорожец с мерседесом.
Устал я от VBA, вот и хочу переписать свой “автоген”, как я его называю, на python`e

Исходники конечно можно вставлять и вручную(копипаст), но их бывает достаточно много и делать приходится это довольно часто, получится это довольно геморно, поэтому нужно делать это автоматически.

Пока не победил я этом камень преткновения: почему VBA без проблем работает с СОМ объектом Simatic.Simatic, а python испытывает проблему незарегистрированного класса.

Отредактировано andman (Сен. 23, 2016 09:05:27)

#7 Сен. 23, 2016 09:03:11

Не удаётся подключиться к COM объекту

Да тут вы правы! Я не понял при чем тут реализация задачи общения по ком порту на питоне и автоматизация с екселем. Кроме того никто не запрещает вам использовать вин32 для других задач!
На данный момент я предложил попробовать просто связаться с вашим устройством посредством pyserial
что бы локализовать вашу проблему

Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

#8 Сен. 23, 2016 09:10:20

Не удаётся подключиться к COM объекту

ZerG
Да тут вы правы! Я не понял при чем тут реализация задачи общения по ком порту на питоне и автоматизация с екселем. Кроме того никто не запрещает вам использовать вин32 для других задач! На данный момент я предложил попробовать просто связаться с вашим устройством посредством pyserial что бы локализовать вашу проблему

Дак у меня нет никакого устройства, есть СОМ-объект, до которого я не могу достучаться на python.

Pyserial работает с последовательным портом и выполняет совсем другие задачи, или я не прав?

#9 Сен. 23, 2016 09:12:15

Не удаётся подключиться к COM объекту

Вот теперь наконец-то понял.
Сдедайте скрины на ком обьект с его названиями и свойствами

Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

#10 Сен. 23, 2016 09:18:37

Не удаётся подключиться к COM объекту

ZerG
Вот теперь наконец-то понял. Сдедайте скрины на ком обьект с его названиями и свойствами

В самом начале темы в первом сообщении 2 скрина моего COM-объекта Simatic, или надо какие то другие скрины?

Отредактировано andman (Сен. 23, 2016 09:19:16)

Источник

Python-сообщество

Уведомления

#1 Дек. 12, 2008 07:03:31

С чем связана ошибка pywintypes.com_error:

При чтении файла возникает ошибка
pywintypes.com_error: (-2147024882, ‘315345344356361362340362356367355356357340354377362350344353377347340345360370345355350377356357345360340366350350.’, None, None)

#2 Дек. 12, 2008 07:15:43

С чем связана ошибка pywintypes.com_error:

что читаешь, какой файл?
код и ошибку полностью давай =)

#3 Дек. 12, 2008 07:43:31

С чем связана ошибка pywintypes.com_error:

Начну с того что питон у меня используется как интерпритатор в системе транспортировки..
Структура файла — текстовый файл(строки с разделителями выгруженная таблица). Размер файла 65521 Кб
Я подозреваю что ошибка связана с тем что файл большой

Если я читаю этот кусок — то всё нормально — но вот если весь файл то ошибка..

#4 Дек. 12, 2008 08:01:18

С чем связана ошибка pywintypes.com_error:

какой код читает этот файл?

#5 Дек. 12, 2008 08:05:36

С чем связана ошибка pywintypes.com_error:

Да. кстати забыл отметить, что я XML формирую здесь…

from Colvir import *
import re
import cssutil
import string
from string import split

fld = <>
fld = ‘FRMT’ # РНН
fld = ‘FIO’ # ФИО/Тип налогоплательщика
fld = ‘REZ’ # Признак резиденства
fld = ‘UCH’ # Постоянное учреждение
fld = ‘PIP’ # Признак ИП
fld = ‘NAMEIP’ # Наименование ИП
fld = ‘DATEREG’ # Дата гос. регистрации ИП
fld = ‘DATECLOSE’ # Дата прекращения деятельности ИП
fld = ‘DATEGOSREG’ # Дата гос. регистрации налогоплательщика
fld = ‘DATELAST’ # Дата последнего снятия с рег. учёта по месту нахождения
fld = ‘PRICH’ # Причина снятия с учёта
fld = ‘TYPEISK’ # Тип исключения из гос. реестра
fld = ‘DATEISK’ # Дата исключения из гос. реестра
fld = ‘DATENPRI’ # Дата начала приостановления
fld = ‘DATEOPRI’ # Дата окончания приостановления

Источник

Python-сообщество

Уведомления

#1 Дек. 12, 2008 08:59:27

С чем связана ошибка pywintypes.com_error:

По моему я понял в чем проблема — LONG RAW не поддерживает такого размера который я пытаюсь записать…

#2 Дек. 12, 2008 09:50:11

С чем связана ошибка pywintypes.com_error:

ну написано же все =))
код ошибки 0x8007000E (E_OUTOFMEMORY) в десятичном представлении -2147024882
сообщение тоже довольно красноречиво “Недостаточно памяти для заершения операции”

shiza
надобы это дело выполнить на системе, в которой msxml — английский, чтоб ошибку прочитать.

#3 Дек. 12, 2008 10:22:00

С чем связана ошибка pywintypes.com_error:

nobodyzzz =)
а я долго гадал, что-же это за кодировка….

#4 Дек. 12, 2008 10:25:24

С чем связана ошибка pywintypes.com_error:

а как с этим бороться… то есть что нужно сделать чтобы читать например файлы с большим размером!?

#5 Дек. 12, 2008 10:27:55

С чем связана ошибка pywintypes.com_error:

Это проблема не с читать а с писать формированием XML с помощью msxml
К сожалению именно с ним я не работал.
Но к слову скажу, что другие при работе с другими модулями XML (не msxml) таких проблем не встречал.

#6 Дек. 12, 2008 10:29:04

С чем связана ошибка pywintypes.com_error:

может всё таки в таблицу не может записать значение… хотя в Oracle LONG RAW поддерживает бинарные данные переменной длины размером до 2 Гб

#7 Дек. 12, 2008 10:31:43

С чем связана ошибка pywintypes.com_error:

shiza
Это проблема не с читать а с писать формированием XML с помощью msxml
К сожалению именно с ним я не работал.
Но к слову скажу, что другие при работе с другими модулями XML (не msxml) таких проблем не встречал.

Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

#8 Дек. 12, 2008 10:51:03

С чем связана ошибка pywintypes.com_error:

А как мне быть если нет других модулей для работы с XML — я могу их на текущую версию как-нибудь поставить!? Просто полностью обновить версию Питона нет возможности сейчас 1.52

#9 Дек. 12, 2008 11:04:20

С чем связана ошибка pywintypes.com_error:

Можно ли прикрутить к моей версии Питона какой-нибудь модуль для работы с XML, если да то какой лучше и как это можно сделать!?

#10 Дек. 12, 2008 11:18:21

С чем связана ошибка pywintypes.com_error:

Vjn
Можно ли прикрутить к моей версии Питона какой-нибудь модуль для работы с XML, если да то какой лучше и как это можно сделать!?

Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Источник

Python-сообщество

Уведомления

#1 Сен. 23, 2016 12:48:57

Не удаётся подключиться к COM объекту

Как то я видимо плохо попробовал ранее запустить сей скрипт на python 32bit, попробовал снова, всё заработало.

#2 Сен. 23, 2016 13:23:13

Не удаётся подключиться к COM объекту

Возможно таки помогла регистрация других ДЛЛ — тут уже точно никто не скажет!

Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

#3 Сен. 23, 2016 21:12:58

Не удаётся подключиться к COM объекту

andman
Как то я видимо плохо попробовал ранее запустить сей скрипт на python 32bit, попробовал снова, всё заработало.

#4 Окт. 6, 2016 10:39:19

Не удаётся подключиться к COM объекту

Помогите со следующей проблемкой:

VBA скрипт работает так:

После чего в среду разработки вставляется исходник signal.scl

Пробую аналог на python:

Собственно у меня такие вопросы:

В строке simatic = win32com.client.Dispatch(“Simatic.Simatic”), simatic это уже объект класса Simatic или сам класс?
По ощущения вроде как объект.

Но в строке, на которую ругается нужно указать сам класс, а не объект класса S7source, как это сделать?

Отредактировано andman (Окт. 6, 2016 10:51:40)

#5 Окт. 6, 2016 11:09:23

Не удаётся подключиться к COM объекту

по логике
“ActiveWorkbook.Path + ”signal.scl“” = равно пути где лежит файл.
Другими словами на выходе что-то типа
c:programmasignal.scl
думаю у вас должно получиться что-то типа

Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

#6 Окт. 6, 2016 11:16:16

Не удаётся подключиться к COM объекту

на команду print(path + “\” + bname + “.scl”)

получаю C:UsersandPycharmProjectsTuhardsignal.scl
что соответствует нужному файлу

Проблема не в пути, а в указании s7source

#7 Окт. 6, 2016 11:23:19

Не удаётся подключиться к COM объекту

Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Окт. 6, 2016 11:26:03)

#8 Окт. 6, 2016 11:34:15

Не удаётся подключиться к COM объекту

Отредактировано andman (Окт. 6, 2016 11:40:40)

#9 Окт. 6, 2016 11:43:30

Не удаётся подключиться к COM объекту

Что значит строка интерпритатора File “ >”, line 3, in Add ?
Line 3 что означает? Ошибка третьего аргумента?

#10 Окт. 6, 2016 11:52:39

Не удаётся подключиться к COM объекту

Учитывая сложность и запустанность вашего случая я бы попробовал сначала написать код банально и пошагово в максимальной похожести на оригинал
После каждой строки вывести print(‘…’) что бы лутче понимать все ли удачно проходит
И смотреть все ли методы отработали — так будет проще выявить “узкое место”
Попробуйте что нить в стиле

Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Источник

OS (e.g. Windows 10 a)

Versions of xlwings, Excel and Python ( Office 2010, Python 3.8)

when i read my excel data in threading i got this error

pywintypes.com_error: (-2147221008, ‘CoInitialize has not been called.’, None, None)

File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedpythonlog.py", line 103, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedpythonlog.py", line 86, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedpythoncontext.py", line 122, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedpythoncontext.py", line 85, in callWithContext
    return func(*args,**kw)
--- <exception caught here> ---
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedinternetselectreactor.py", line 149, in _doReadOrWrite
    why = getattr(selectable, method)()
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedinternettcp.py", line 243, in doRead
    return self._dataReceived(data)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedinternettcp.py", line 249, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedprotocolstls.py", line 330, in dataReceived
    self._flushReceiveBIO()
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedprotocolstls.py", line 295, in _flushReceiveBIO
    ProtocolWrapper.dataReceived(self, bytes)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagestwistedprotocolspolicies.py", line 120, in dataReceived
    self.wrappedProtocol.dataReceived(data)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesautobahntwistedwebsocket.py", line 290, in dataReceived
    self._dataReceived(data)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesautobahnwebsocketprotocol.py", line 1206, in _dataReceived
    self.consumeData()
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesautobahnwebsocketprotocol.py", line 1218, in consumeData
    while self.processData() and self.state != WebSocketProtocol.STATE_CLOSED:
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesautobahnwebsocketprotocol.py", line 1578, in processData
    fr = self.onFrameEnd()
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesautobahnwebsocketprotocol.py", line 1703, in onFrameEnd
    self._onMessageEnd()
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesautobahntwistedwebsocket.py", line 318, in _onMessageEnd
    self.onMessageEnd()
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesautobahnwebsocketprotocol.py", line 627, in onMessageEnd
    self._onMessage(payload, self.message_is_binary)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesautobahntwistedwebsocket.py", line 321, in _onMessage
    self.onMessage(payload, isBinary)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packageskiteconnectticker.py", line 71, in onMessage
    self.factory.on_message(self, payload, is_binary)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packageskiteconnectticker.py", line 670, in _on_message
    self.on_ticks(self, self._parse_binary(payload))
  File "C:/Users/Welcome/Desktop/Trade/Kite_Check.py", line 79, in on_ticks
    if tsht.range((2, 7)).value == 'Target order still Pending' :
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesxlwingsmain.py", line 861, in range
    return Range(impl=self.impl.range(cell1, cell2))
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesxlwings_xlwindows.py", line 613, in range
    xl1 = self.xl.Cells(arg1[0], arg1[1])
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packagesxlwings_xlwindows.py", line 120, in __getattr__
    v = getattr(self._inner, item)
  File "C:UsersWelcomeAppDataLocalProgramsPythonPython38-32libsite-packageswin32comclientdynamic.py", line 516, in __getattr__
    ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2147221008, 'CoInitialize has not been called.', None, None)

Include a minimal code sample to reproduce the issue (and attach a sample workbook if required!)

filename_read = 'My_trade.xlsx'
wb = xw.Book(filename_read)
dsht = wb.sheets['Data']
tesht = wb.sheets['Trading_Entry']
tsht = wb.sheets['Trading']
osht = wb.sheets['Order']
pnlsht = wb.sheets['PNL']

    if tsht.range((2, 7)).value == 'Target order still Pending' :
        for tick in ticks:

This is the error that my Dash error console throws me. My previous iteration of code had solved this by using «pythoncom.CoInitialize()».

But I’m trying to streamline my code and make it update/work faster, and I cannot solve this error again.

My main issue is that I don’t understand the error or why I’m getting it. What is it?

Here is my MAIN code:

# import stuff for paths and serials
import win32com.client
import pythoncom

import vna_control as vna

# import stuff for treating data
import panda_express as pe
import datetime

# import stuff for plotly and dash
import dash
from dash.dependencies import Output, Input
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go

pythoncom.CoInitialize()
serial = win32com.client.Dispatch("PicoControl2.PicoVNA_2")

obj = vna.VNA_Object("Pico VNA", "Curling Probe")
obj.open_vna(serial)

probe_file = f'Run {datetime.datetime.now().strftime("%Y-%m-%d-%I-%M-%S")}.csv'

pe.writing_Frequency(probe_file, obj.measure_vna_frequency(serial))

'''This section is Dash-app related'''
app = dash.Dash(__name__)
app.layout = html.Div(
    [
        dcc.Graph(id='live-graph', animate=False),
        dcc.Interval(
            id='graph-update',
            interval=4000,
            n_intervals = 0
        ),
     ]
)

@app.callback(Output('live-graph', 'figure'),
        [Input('graph-update', 'n_intervals')])

def update_graph_scatter(n):
    pythoncom.CoInitialize()
    y_s11_1 = obj.measure_vna_ys11(serial)
    x_frequency_1 = obj.measure_vna_frequency(serial)

    pe.writing_Data(probe_file, y_s11_1)

    data = go.Scatter(
            x=x_frequency_1,
            y=y_s11_1,
            name='S11 Parameters of Curling Probe',
            mode='lines'
            )

    return {'data': [data], 'layout': go.Layout(xaxis=dict(range=[min(x_frequency_1), max(x_frequency_1)]),
                                            yaxis=dict(range=[min(y_s11_1), max(y_s11_1)]),
                                            xaxis_title=dict(text="Frequency (MHz)"),
                                            
yaxis_title=dict(text="S11 Parameter"))}

obj.close_vna(serial)

if __name__ == '__main__':
    app.run_server(debug=True)

The problem I think lies in the «def update_graph_scatter» function. Something about that block gives the multithread error but I don’t know why. Here is the module/class «vna_control» I made to control my VNA for taking data. Its an instrument connected to my laptop via USB:

# It is better to create a class of VNA object that contains a bunch of methods.
import pythoncom
from pathlib import Path
import numpy as np

calibrationpath = Path("C:/Users/ayilarana/PycharmProjects/pythonProject/ring.cal")
calibrationkitpath = Path("C:/Users/ayilarana/PycharmProjects/pythonProject/SF287.kit")

pythoncom.CoInitialize()

class VNA_Object:
    def __init__(self, name, description):
        self.name = name
        self.type = description

    def open_vna(self, serial_1):

        pythoncom.CoInitialize()
        findVNA = serial_1.FND()

        if findVNA == 0:
            print("No VNA Loaded")
            exit()
        else:
            print('VNA ' + str(findVNA) + ' Loaded')

        dll = serial_1.DLLVer()
        print(dll)

        cali = serial_1.SelectKit(calibrationkitpath, "1")
        print("Result " + str(cali))

        enhance_averages = serial_1.SetEnhance("aver", 100)
        print("Averages: " + enhance_averages)

        ans = serial_1.SelectCal(calibrationpath)
        print("Result " + str(ans))

        return print("VNA Open")

    def measure_vna_frequency(self, serial_1):
        pythoncom.CoInitialize()
        meas = serial_1.Measure("S11")
        print("Result " + str(meas))

        raw = serial_1.GetData("S11", "logmag", 0)

        splitdata = raw.split(',')
        converteddata = np.array(splitdata)
        converteddata = converteddata.astype(np.float)
        x_frequency = converteddata[:: 2]

        return x_frequency

    def measure_vna_ys11(self, serial_1):
        pythoncom.CoInitialize()
        meas = serial_1.Measure("S11")
        print("Result " + str(meas))

        raw = serial_1.GetData("S11", "logmag", 0)

        splitdata = raw.split(',')
        converteddata = np.array(splitdata)
        converteddata = converteddata.astype(np.float)
        y_s11 = converteddata[1:: 2]

        return y_s11

    def close_vna(self, serial_1):
        serial_1.CloseVNA()
        return print("VNA Closed")

Here is the module I use to read/write data to .csv:

import pandas as pd
import datetime

def writing_Frequency(file, x_frequency):
    df = pd.DataFrame()
    df.insert(0, "Frequency", x_frequency, True)
    df.to_csv(file, index=False)
    return print(df)

def writing_Data(file, y_s11):
    df = pd.read_csv(file)
    df[f'{datetime.datetime.now().strftime("%I-%M-%S")}'] = y_s11
    df.to_csv(file, index=False)
    return print(df)

If you’re wondering about my code, naming conventions etc… I have no idea what I’m doing really. I’m trying to refactor my code so it is quicker and dash/plotly can update at at least 1s without my VNA failing to read/record data. I’ve never used classes before, so I’m not even sure I’m supposed to use it. Just thought it would be the cleanest way to make a «VNA Object» and give it commands to open, take data, close etc etc… without repeating instructions in long-winded lines of code.

Any help/tips are appreciated, I’ve been stuck on this for a couple of hours now.

Best regards,

Here are the examples of the python api pywintypes.com_error taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.


3

Example 1

  def __call__ (self, timeout_ms=-1):
    """When called, return the instance which caused the event. Supports
     timeout in milliseconds (defaulting to infinite). If the watcher
     times out, :exc:`x_wmi_timed_out` is raised. This makes it easy to support
     watching for multiple objects.
    """
    try:
      event = self.wmi_event.NextEvent (timeout_ms)
      if self.is_extrinsic:
        return _wmi_event (event, None, self.fields)
      else:
        return _wmi_event (
          event.Properties_ ("TargetInstance").Value,
          _wmi_object (event, property_map=self._event_property_map),
          self.fields
        )
    except pywintypes.com_error:
      handle_com_error ()


3

Example 2

    def contains(self, name_or_index):
        try:
            self.xl(name_or_index)
        except pywintypes.com_error as e:
            if e.hresult == -2147352567:
                return False
            else:
                raise
        return True


3

Example 3

    @property
    def name(self):
        if self.xl is not None:
            try:
                name = Name(xl=self.xl.Name)
            except pywintypes.com_error:
                name = None
            return name
        else:
            return None


3

Example 4

    def testStrangeArgsTooMany(self):
        try:
            raise pywintypes.com_error("foo", "bar", "you", "never", "kn", 0)
            self.fail("Expected exception")
        except pywintypes.com_error as exc:
            self.failUnlessEqual(exc.args[0], "foo")
            self.failUnlessEqual(exc.args[-1], 0)
            self.failUnlessEqual(exc.hresult, "foo")
            self.failUnlessEqual(exc.strerror, "bar")
            self.failUnlessEqual(exc.excepinfo, "you")
            self.failUnlessEqual(exc.argerror, "never")


3

Example 5

  def _cached_associated_classes (self):
    if self._associated_classes is None:
      if isinstance (self, _wmi_class):
        params = {'bSchemaOnly' : True}
      else:
        params = {'bClassesOnly' : True}
      try:
        associated_classes = dict (
          (assoc.Path_.Class, _wmi_class (self._namespace, assoc)) for
            assoc in self.ole_object.Associators_ (**params)
        )
        _set (self, "_associated_classes", associated_classes)
      except pywintypes.com_error:
        handle_com_error ()

    return self._associated_classes


3

Example 6

  def __getattr__ (self, attribute):
    """Offer WMI classes as simple attributes. Pass through any untrapped
    unattribute to the underlying OLE object. This means that new or
    unmapped functionality is still available to the module user.
    """
    #
    # Don't try to match against known classes as was previously
    # done since the list may not have been requested
    # (find_classes=False).
    #
    try:
      return self._cached_classes (attribute)
    except pywintypes.com_error:
      return getattr (self._namespace, attribute)


3

Example 7

    def __setattr__(self, key, value):
        n_attempt = 1
        while True:
            try:
                return setattr(self._inner, key, value)
            except pywintypes.com_error as e:
                if (not N_COM_ATTEMPTS or n_attempt < N_COM_ATTEMPTS) and e.hresult == -2147418111:
                    n_attempt += 1
                    continue
                else:
                    raise
            except AttributeError as e:
                if not N_COM_ATTEMPTS or n_attempt < N_COM_ATTEMPTS:
                    n_attempt += 1
                    continue
                else:
                    raise


3

Example 8

  def _raw_query (self, wql):
    """Execute a WQL query and return its raw results.  Use the flags
    recommended by Microsoft to achieve a read-only, semi-synchronous
    query where the time is taken while looping through.
    NB Backslashes need to be doubled up.
    """
    flags = wbemFlagReturnImmediately | wbemFlagForwardOnly
    wql = wql.replace ("\", "\\")
    try:
      return self._namespace.ExecQuery (strQuery=wql, iFlags=flags)
    except pywintypes.com_error:
      handle_com_error ()


3

Example 9

    def start(self):
        try:
            self._object = None
            self._object = win32com.client.DispatchEx(self._clsid)

        except pywintypes.com_error as e:
            print("Caught pywintypes.com_error creating ActiveX control [%s]" % e)
            raise

        except:
            print("Caught unkown exception creating ActiveX control [%s]" % sys.exc_info()[0])
            raise


3

Example 10

  def __setattr__ (self, attribute, value):
    """If the attribute to be set is valid for the proxied
    COM object, set that objects's parameter value; if not,
    raise an exception.
    """
    try:
      if attribute in self.properties:
        self._cached_properties (attribute).set (value)
        if self.ole_object.Path_.Path:
          self.ole_object.Put_ ()
      else:
        raise AttributeError (attribute)
    except pywintypes.com_error:
      handle_com_error ()


3

Example 11

    def testStrangeArgsNone(self):
        try:
            raise pywintypes.com_error()
            self.fail("Expected exception")
        except pywintypes.com_error as exc:
            self.failUnlessEqual(exc.args, ())
            self.failUnlessEqual(exc.hresult, None)
            self.failUnlessEqual(exc.strerror, None)
            self.failUnlessEqual(exc.argerror, None)
            self.failUnlessEqual(exc.excepinfo, None)


3

Example 12

    def testStrangeArgsTooMany(self):
        try:
            raise pywintypes.com_error("foo", "bar", "you", "never", "kn", 0)
            self.fail("Expected exception")
        except pywintypes.com_error, exc:
            self.failUnlessEqual(exc.args[0], "foo")
            self.failUnlessEqual(exc.args[-1], 0)
            self.failUnlessEqual(exc.hresult, "foo")
            self.failUnlessEqual(exc.strerror, "bar")
            self.failUnlessEqual(exc.excepinfo, "you")
            self.failUnlessEqual(exc.argerror, "never")


3

Example 13

  def instances (self, class_name):
    """Return a list of instances of the WMI class. This is
    (probably) equivalent to querying with no qualifiers::

      wmi.WMI ().instances ("Win32_LogicalDisk")
      # should be the same as
      wmi.WMI ().Win32_LogicalDisk ()
    """
    try:
      return [_wmi_object (obj) for obj in self._namespace.InstancesOf (class_name)]
    except pywintypes.com_error:
      handle_com_error ()


3

Example 14

  def __str__ (self):
    """For a call to print [object] return the OLE description
    of the properties / values of the object
    """
    try:
      return self.ole_object.GetObjectText_ ()
    except pywintypes.com_error:
      handle_com_error ()


3

Example 15

    def __contains__(self, key):
        try:
            self.xl.Item(key)
            return True
        except pywintypes.com_error:
            return False


3

Example 16

    def testStrangeArgsNotEnough(self):
        try:
            raise pywintypes.com_error("foo")
            self.fail("Expected exception")
        except pywintypes.com_error as exc:
            self.failUnlessEqual(exc.args[0], "foo")
            self.failUnlessEqual(exc.hresult, "foo")
            self.failUnlessEqual(exc.strerror, None)
            self.failUnlessEqual(exc.excepinfo, None)
            self.failUnlessEqual(exc.argerror, None)


3

Example 17

  def __repr__ (self):
    """
    Indicate both the fact that this is a wrapped WMI object
    and the WMI object's own identifying class.
    """
    try:
      return "<%s: %s>" % (self.__class__.__name__, self.Path_.Path.encode ("ascii", "backslashreplace"))
    except pywintypes.com_error:
      handle_com_error ()


3

Example 18

    @property
    def hyperlink(self):
        if self.xl is not None:
            try:
                return self.xl.Hyperlinks(1).Address
            except pywintypes.com_error:
                raise Exception("The cell doesn't seem to contain a hyperlink!")
        else:
            return ''


3

Example 19

  def derivation (self):
    """Return a tuple representing the object derivation for
    this object, with the most specific object first::

      pp0 = wmi.WMI ().Win32_ParallelPort ()[0]
      print ' <- '.join (pp0.derivation ())
    """
    try:
      return self.ole_object.Derivation_
    except pywintypes.com_error:
      handle_com_error ()


3

Example 20

  def instances (self):
    """Return a list of instances of the WMI class
    """
    try:
      return [_wmi_object (instance, self) for instance in self.Instances_ ()]
    except pywintypes.com_error:
      handle_com_error ()


3

Example 21

  def __getattr__ (self, attribute):
    try:
      if attribute in self.properties:
        return _wmi_property (self.Properties_ (attribute))
      else:
        return _wmi_object.__getattr__ (self, attribute)
    except pywintypes.com_error:
      handle_com_error ()


3

Example 22

  def path (self):
    """Return the WMI URI to this object. Can be used to
    determine the path relative to the parent namespace::

      pp0 = wmi.WMI ().Win32_ParallelPort ()[0]
      print pp0.path ().RelPath

    ..  Do more with this
    """
    try:
      return self.ole_object.Path_
    except pywintypes.com_error:
      handle_com_error ()


3

Example 23

    def is_admin(self):
        import pywintypes
        try:
            from win32com.shell import shell
            return shell.IsUserAnAdmin()
        except pywintypes.com_error:
            # Thrown on certain XP installs
            return True


3

Example 24

  def query (self, fields=[], **where_clause):
    """Make it slightly easier to query against the class,
     by calling the namespace's query with the class preset.
     Won't work if the class has been instantiated directly.
    """
    #
    # FIXME: Not clear if this can ever happen
    #
    if self._namespace is None:
      raise x_wmi_no_namespace ("You cannot query directly from a WMI class")

    try:
      field_list = ", ".join (fields) or "*"
      wql = "SELECT " + field_list + " FROM " + self._class_name
      if where_clause:
        wql += " WHERE " + " AND ". join (["%s = %r" % (k, str (v)) for k, v in where_clause.items ()])
      return self._namespace.query (wql, self, fields)
    except pywintypes.com_error:
      handle_com_error ()


2

Example 25

def np_cb(word, word_eol, userdata):
	try:
		itunes = win32com.client.Dispatch('iTunes.Application')
	except pywintypes.com_error:
		print("itunes: Failed to communicate with itunes. Note that this requires admin access and you should have had a UAC prompt.")
		return hexchat.EAT_ALL

	# TODO: Settings
	try:
		track = itunes.CurrentTrack
		hexchat.command('me is now playing {} by {} on {}'.format(track.Name, track.Artist, track.Album))
	except AttributeError:
		print('No song was found playing.')
	
	return hexchat.EAT_ALL


2

Example 26

    def _get_resource(self, resource_uri):
        session = self._get_wsman_session()
        try:
            return session.Get(resource_uri)
        except pywintypes.com_error as ex:
            if len(ex.excepinfo) > 5 and ex.excepinfo[5] == -2144108544:
                return None
            else:
                raise


2

Example 27

    def testStrangeArgsNone(self):
        try:
            raise pywintypes.com_error()
            self.fail("Expected exception")
        except pywintypes.com_error, exc:
            self.failUnlessEqual(exc.args, ())
            self.failUnlessEqual(exc.hresult, None)
            self.failUnlessEqual(exc.strerror, None)
            self.failUnlessEqual(exc.argerror, None)
            self.failUnlessEqual(exc.excepinfo, None)


2

Example 28

def run(bdbname, useDBM, ldbname, rdbname, foldname, doTrain, doClassify,
        pwd, idxname, logname):
    bayes = storage.open_storage(bdbname, useDBM)

    try:
        notesindex = pickle_read(idxname)
    except IOError, e:
        if e.errno != errno.ENOENT:
            raise
        notesindex = {}
        print "%s file not found, this is a first time run" % (idxname,)
        print "No classification will be performed"

    need_replicate = False

    sess = win32com.client.Dispatch("Lotus.NotesSession")
    try:
        if pwd:
            sess.initialize(pwd)
        else:
            sess.initialize()
    except pywintypes.com_error:
        print "Session aborted"
        sys.exit()
    try:
        db = sess.GetDatabase(rdbname, ldbname)
    except pywintypes.com_error:
        if rdbname:
            print "Could not open database remotely, trying locally"
            try:
                db = sess.GetDatabase("", ldbname)
                need_replicate = True
            except pywintypes.com_error:
                print "Could not open database"
                sys.exit()
        else:
            raise

    log = sess.CreateLog("SpambayesAgentLog")
    try:
        log.OpenNotesLog("", logname)
    except pywintypes.com_error:
        print "Could not open log"
        log = None

    if log:
        log.LogAction("Running spambayes")

    vinbox = db.getView('($Inbox)')
    vspam = db.getView("%sSpam" % (foldname,))
    vham = db.getView("%sHam" % (foldname,))
    vtrainspam = db.getView("%sTrain as Spam" % (foldname,))
    vtrainham = db.getView("%sTrain as Ham" % (foldname,))

    if doTrain:
        processAndTrain(vtrainspam, vspam, bayes, True, notesindex, log)
        # for some reason, using inbox as a target here loses the mail
        processAndTrain(vtrainham, vham, bayes, False, notesindex, log)

    if need_replicate:
        try:
            print "Replicating..."
            db.Replicate(rdbname)
            print "Done"
        except pywintypes.com_error:
            print "Could not replicate"

    if doClassify:
        classifyInbox(vinbox, vtrainspam, bayes, ldbname, notesindex, log)

    print "The Spambayes database currently has %s Spam and %s Ham" 
          % (bayes.nspam, bayes.nham)

    bayes.store()

    pickle_write(idxname, notesindex)

    if log:
        log.LogAction("Finished running spambayes")


2

Example 29

    def testStrangeArgsNotEnough(self):
        try:
            raise pywintypes.com_error("foo")
            self.fail("Expected exception")
        except pywintypes.com_error, exc:
            self.failUnlessEqual(exc.args[0], "foo")
            self.failUnlessEqual(exc.hresult, "foo")
            self.failUnlessEqual(exc.strerror, None)
            self.failUnlessEqual(exc.excepinfo, None)
            self.failUnlessEqual(exc.argerror, None)


2

Example 30

    def unregister_port(self, external_port, protocol):
        try:
            self.port_collection.Remove(external_port, protocol)
            self.logfunc(INFO, ("unregisterd: %s, %s" % (external_port, protocol)), optional=False)
        except pywintypes.com_error, e:
            if (e[2][5] == -2147352567):
                UPNPError(self.logfunc, ("Port %d:%s not bound" % (external_port, protocol)))
            elif (e[2][5] == -2147221008):
                UPNPError(self.logfunc, ("Port %d:%s is bound and is not ours to remove" % (external_port, protocol)))
            elif (e[2][5] == -2147024894):
                UPNPError(self.logfunc, ("Port %d:%s not bound (2)" % (external_port, protocol)))
            else:
                raise


2

Example 31

    def _list_ports(self):
        mappings = []

        try:
            for mp in self.port_collection:
                mapping = UPnPPortMapping(mp.ExternalPort, mp.InternalPort, mp.Protocol,
                                          mp.InternalClient, mp.Description)
                mappings.append(mapping)
        except pywintypes.com_error, e:
            # it's the "for mp in self.port_collection" iter that can throw
            # an exception.
            # com_error: (-2147220976, 'The owner of the PerUser subscription is
            #                           not logged on to the system specified',
            #             None, None)
            pass

        return mappings


0

Example 32

def MakeModuleForTypelibInterface(typelib_ob, progressInstance = None, bForDemand = bForDemandDefault, bBuildHidden = 1):
	"""Generate support for a type library.
	
	Given a PyITypeLib interface generate and import the necessary support files.  This is useful
	for getting makepy support for a typelibrary that is not registered - the caller can locate
	and load the type library itself, rather than relying on COM to find it.
	
	Returns the Python module.

	Params
	typelib_ob -- The type library itself
	progressInstance -- Instance to use as progress indicator, or None to
	                    use the GUI progress bar.
	"""
	import makepy
	try:
		makepy.GenerateFromTypeLibSpec( typelib_ob, progressInstance=progressInstance, bForDemand = bForDemandDefault, bBuildHidden = bBuildHidden)
	except pywintypes.com_error:
		return None
	tla = typelib_ob.GetLibAttr()
	guid = tla[0]
	lcid = tla[1]
	major = tla[3]
	minor = tla[4]
	return GetModuleForTypelib(guid, lcid, major, minor)


0

Example 33

  def new (self, **kwargs):
    """This is the equivalent to the raw-WMI SpawnInstance_
    method. Note that there are relatively few uses for
    this, certainly fewer than you might imagine. Most
    classes which need to create a new *real* instance
    of themselves, eg Win32_Process, offer a .Create
    method. SpawnInstance_ is generally reserved for
    instances which are passed as parameters to such
    `.Create` methods, a common example being the
    `Win32_SecurityDescriptor`, passed to `Win32_Share.Create`
    and other instances which need security.

    The example here is `Win32_ProcessStartup`, which
    controls the shown/hidden state etc. of a new
    `Win32_Process` instance::

      import win32con
      import wmi
      c = wmi.WMI ()
      startup = c.Win32_ProcessStartup.new (ShowWindow=win32con.SW_SHOWMINIMIZED)
      pid, retval = c.Win32_Process.Create (
        CommandLine="notepad.exe",
        ProcessStartupInformation=startup
      )

    ..  warning::
        previous versions of this docstring illustrated using this function
        to create a new process. This is *not* a good example of its use;
        it is better handled with something like the example above.
    """
    try:
      obj = _wmi_object (self.SpawnInstance_ (), self)
      obj.set (**kwargs)
      return obj
    except pywintypes.com_error:
      handle_com_error ()


0

Example 34

  def __init__ (self, ole_object, method_name):
    """
    :param ole_object: The WMI class/instance whose method is to be called
    :param method_name: The name of the method to be called
    """
    try:
      self.ole_object = Dispatch (ole_object)
      self.method = ole_object.Methods_ (method_name)
      self.qualifiers = {}
      for q in self.method.Qualifiers_:
        self.qualifiers[q.Name] = q.Value
      self.provenance = "n".join (self.qualifiers.get ("MappingStrings", []))

      self.in_parameters = self.method.InParameters
      self.out_parameters = self.method.OutParameters
      if self.in_parameters is None:
        self.in_parameter_names = []
      else:
        self.in_parameter_names = [(i.Name, i.IsArray) for i in self.in_parameters.Properties_]
      if self.out_parameters is None:
        self.out_parameter_names = []
      else:
        self.out_parameter_names = [(i.Name, i.IsArray) for i in self.out_parameters.Properties_]

      doc = "%s (%s) => (%s)" % (
        method_name,
        ", ".join ([name + ("", "[]")[is_array] for (name, is_array) in self.in_parameter_names]),
        ", ".join ([name + ("", "[]")[is_array] for (name, is_array) in self.out_parameter_names])
      )
      privileges = self.qualifiers.get ("Privileges", [])
      if privileges:
        doc += " | Needs: " + ", ".join (privileges)
      self.__doc__ = doc
    except pywintypes.com_error:
      handle_com_error ()


0

Example 35

  def get (self, moniker):
    try:
      return _wmi_object (self.wmi.Get (moniker))
    except pywintypes.com_error:
      handle_com_error ()


0

Example 36

  def __call__ (self, *args, **kwargs):
    """Execute the call to a WMI method, returning
    a tuple (even if is of only one value) containing
    the out and return parameters.
    """
    try:
      if self.in_parameters:
        parameter_names = {}
        for name, is_array in self.in_parameter_names:
          parameter_names[name] = is_array

        parameters = self.in_parameters

        #
        # Check positional parameters first
        #
        for n_arg in range (len (args)):
          arg = args[n_arg]
          parameter = parameters.Properties_[n_arg]
          if parameter.IsArray:
            try: list (arg)
            except TypeError: raise TypeError ("parameter %d must be iterable" % n_arg)
          parameter.Value = arg

        #
        # If any keyword param supersedes a positional one,
        # it'll simply overwrite it.
        #
        for k, v in kwargs.items ():
          is_array = parameter_names.get (k)
          if is_array is None:
            raise AttributeError ("%s is not a valid parameter for %s" % (k, self.__doc__))
          else:
            if is_array:
              try: list (v)
              except TypeError: raise TypeError ("%s must be iterable" % k)
          parameters.Properties_ (k).Value = v

        result = self.ole_object.ExecMethod_ (self.method.Name, self.in_parameters)
      else:
        result = self.ole_object.ExecMethod_ (self.method.Name)

      results = []
      for name, is_array in self.out_parameter_names:
        value = result.Properties_ (name).Value
        if is_array:
          #
          # Thanks to Jonas Bjering for bug report and patch
          #
          results.append (list (value or []))
        else:
          results.append (value)
      return tuple (results)

    except pywintypes.com_error:
      handle_com_error ()


0

Example 37

  def watch_for (
    self,
    raw_wql=None,
    notification_type="operation",
    wmi_class=None,
    delay_secs=1,
    fields=[],
    **where_clause
  ):
    """Set up an event tracker on a WMI event. This function
    returns an wmi_watcher which can be called to get the
    next event::

      c = wmi.WMI ()

      raw_wql = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_Process'"
      watcher = c.watch_for (raw_wql=raw_wql)
      while 1:
        process_created = watcher ()
        print process_created.Name

      # or

      watcher = c.watch_for (
        notification_type="Creation",
        wmi_class="Win32_Process",
        delay_secs=2,
        Name='calc.exe'
      )
      calc_created = watcher ()

    Now supports timeout on the call to watcher::

      import pythoncom
      import wmi
      c = wmi.WMI (privileges=["Security"])
      watcher1 = c.watch_for (
        notification_type="Creation",
        wmi_class="Win32_NTLogEvent",
        Type="error"
      )
      watcher2 = c.watch_for (
        notification_type="Creation",
        wmi_class="Win32_NTLogEvent",
        Type="warning"
      )

      while 1:
        try:
          error_log = watcher1 (500)
        except wmi.x_wmi_timed_out:
          pythoncom.PumpWaitingMessages ()
        else:
          print error_log

        try:
          warning_log = watcher2 (500)
        except wmi.x_wmi_timed_out:
          pythoncom.PumpWaitingMessages ()
        else:
          print warning_log
    """
    if isinstance (wmi_class, _wmi_class):
      class_name = wmi_class._class_name
    else:
      class_name = wmi_class
      wmi_class = getattr (self, class_name)
    is_extrinsic = "__ExtrinsicEvent" in wmi_class.derivation ()
    if raw_wql:
      wql = raw_wql
    else:
      fields = set (['TargetInstance'] + (fields or ["*"]))
      field_list = ", ".join (fields)
      if is_extrinsic:
        if where_clause:
          where = " WHERE " + " AND ".join (["%s = '%s'" % (k, v) for k, v in where_clause.items ()])
        else:
          where = ""
        wql = "SELECT " + field_list + " FROM " + class_name + where
      else:
        if where_clause:
          where = " AND " + " AND ".join (["TargetInstance.%s = '%s'" % (k, v) for k, v in where_clause.items ()])
        else:
          where = ""
        wql = 
          "SELECT %s FROM __Instance%sEvent WITHIN %d WHERE TargetInstance ISA '%s' %s" % 
          (field_list, notification_type, delay_secs, class_name, where)

    try:
      return _wmi_watcher (
        self._namespace.ExecNotificationQuery (wql),
        is_extrinsic=is_extrinsic,
        fields=fields
      )
    except pywintypes.com_error:
      handle_com_error ()


0

Example 38

    def __init__(self, traverser):
        NATBase.__init__(self, traverser.logfunc)

        self.upnpnat = None
        self.port_collection = None
        self.traverser = traverser
        
        win32com.client.pythoncom.CoInitialize()
        
        try:
            self.upnpnat = win32com.client.Dispatch("HNetCfg.NATUPnP")
        except pywintypes.com_error, e:
            if (e[2][5] == -2147221005):
                raise WindowsUPnPException("invalid class string")
            else:
                raise

        try:
            self.port_collection = self.upnpnat.StaticPortMappingCollection
            if self.port_collection is None:
                raise WindowsUPnPException("none port_collection")
        except pywintypes.com_error, e:
            #if e[1].lower() == "exception occurred.":
            if (e[2][5] == -2147221164):
                #I think this is Class Not Registered
                #it happens on Windows 98 after the XP ICS wizard has been run
                raise WindowsUPnPException("exception occurred, class not registered")
            else:
                raise

        # attach service, so the queue gets flushed
        self.traverser.attach_service(self)


0

Example 39

def wrapper(winerror_map, default_exception=x_winsys):
    """Used by each module to map specific windows error codes onto
    Python exceptions. Always includes a default which is raised if
    no specific exception is found.
    """
    def _wrapped(function, *args, **kwargs):
        """Call a Windows API with parameters, and handle any
        exception raised either by mapping it to a module-specific
        one or by passing it back up the chain.
        """
        try:
            return function(*args, **kwargs)
        except pywintypes.com_error as exception_info:
            (hresult_code, hresult_name, additional_info, parameter_in_error) = exception_info.args
            exception_string = ["%08X - %s" % (utils.signed_to_unsigned(hresult_code), hresult_name.decode("mbcs"))]
            if additional_info:
                wcode, source_of_error, error_description, whlp_file, whlp_context, scode = additional_info
                exception_string.append("    Error in: %s" % source_of_error.decode("mbcs"))
                exception_string.append("    %08X - %s" % (utils.signed_to_unsigned(scode), (error_description or "").decode("mbcs").strip()))
            exception = winerror_map.get(hresult_code, default_exception)
            raise exception(hresult_code, hresult_name, "n".join(exception_string))
        except pywintypes.error as exception_info:
            (errno, errctx, errmsg) = exception_info.args
            exception = winerror_map.get(errno, default_exception)
            raise exception(errno, errctx, errmsg)
        except (WindowsError, IOError) as exception_info:
            exception = winerror_map.get(exception_info.errno, default_exception)
            if exception:
                raise exception(exception_info.errno, "", exception_info.strerror)
    return _wrapped


0

Example 40

  def __init__ (self, ole_object, instance_of=None, fields=[], property_map={}):
    try:
      _set (self, "ole_object", ole_object)
      _set (self, "id", ole_object.Path_.DisplayName.lower ())
      _set (self, "_instance_of", instance_of)
      _set (self, "properties", {})
      _set (self, "methods", {})
      _set (self, "property_map", property_map)
      _set (self, "_associated_classes", None)
      _set (self, "_keys", None)

      if fields:
        for field in fields:
          self.properties[field] = None
      else:
        for p in ole_object.Properties_:
          self.properties[p.Name] = None

      for m in ole_object.Methods_:
        self.methods[m.Name] = None

      _set (self, "_properties", self.properties.keys ())
      _set (self, "_methods", self.methods.keys ())
      _set (self, "qualifiers", dict ((q.Name, q.Value) for q in self.ole_object.Qualifiers_))

    except pywintypes.com_error:
      handle_com_error ()


0

Example 41

    def testIs(self):
        self.failUnless(pythoncom.com_error is pywintypes.com_error)


0

Example 42

    def register_port(self, mapping):
        try:
            self.port_collection.Add(mapping.external_port, mapping.protocol,
                                     mapping.internal_port, mapping.host,
                                     True, mapping.service_name)
            self.logfunc(INFO, "registered: " + str(mapping), optional=False)
            mapping.d.callback(mapping.external_port)
        except pywintypes.com_error, e:
            # host == 'fake' or address already bound
            #if (e[2][5] == -2147024726):
            # host == '', or I haven't a clue
            #e.args[0] == -2147024894

            #mapping.d.errback(e)

            # detach self so the queue isn't flushed
            self.traverser.detach_service(self)

            if hasattr(mapping, 'original_external_port'):
                mapping.external_port = mapping.original_external_port
                del mapping.original_external_port

            # push this mapping back on the queue            
            self.traverser.register_requests.append(mapping)    

            # resume init services, because we know we've failed
            self.traverser.resume_init_services()


0

Example 43

    def testIdentity(self):
        exc = self._getException()
        self.failUnless(exc.__class__ is pywintypes.com_error)


0

Example 44

  def __getattr__ (self, attribute):
    """
    Attempt to pass attribute calls to the proxied COM object.
    If the attribute is recognised as a property, return its value;
    if it is recognised as a method, return a method wrapper which
    can then be called with parameters; otherwise pass the lookup
    on to the underlying object.
    """
    try:
      if attribute in self.properties:
        property = self._cached_properties (attribute)
        factory = self.property_map.get (attribute, self.property_map.get (property.type, lambda x: x))
        value = factory (property.value)
        #
        # If this is an association, certain of its properties
        # are actually the paths to the aspects of the association,
        # so translate them automatically into WMI objects.
        #
        if property.type.startswith ("ref:"):
          return WMI (moniker=value)
        else:
          return value
      elif attribute in self.methods:
        return self._cached_methods (attribute)
      else:
        return getattr (self.ole_object, attribute)
    except pywintypes.com_error:
      handle_com_error ()


0

Example 45

  def set (self, **kwargs):
    """Set several properties of the underlying object
    at one go. This is particularly useful in combination
    with the new () method below. However, an instance
    which has been spawned in this way won't have enough
    information to write pack, so only try if the
    instance has a path.
    """
    if kwargs:
      try:
        for attribute, value in kwargs.items ():
          if attribute in self.properties:
            self._cached_properties (attribute).set (value)
          else:
            raise AttributeError (attribute)
        #
        # Only try to write the attributes
        #  back if the object exists.
        #
        if self.ole_object.Path_.Path:
          self.ole_object.Put_ ()
      except pywintypes.com_error:
        handle_com_error ()


0

Example 46

    def _create_or_change_user(self, username, password, create,
                               password_expires):
        try:
            if create:
                host = self._get_adsi_object()
                user = host.Create('user', username)
            else:
                user = self._get_adsi_object(object_name=username,
                                             object_type='user')

            user.setpassword(password)
            user.SetInfo()

            self._set_user_password_expiration(username, password_expires)
        except pywintypes.com_error as ex:
            if create:
                msg = "Create user failed: %s"
            else:
                msg = "Set user password failed: %s"
            raise exception.CloudbaseInitException(msg % ex.excepinfo[2])


0

Example 47

    def _query(self): # pylint: disable=E0202
        """
        Query WMI using WMI Query Language (WQL) & parse the results.

        Returns: List of WMI objects or `TimeoutException`.
        """
        formated_property_names = ",".join(self.property_names)
        wql = "Select {property_names} from {class_name}{filters}".format(
            property_names=formated_property_names,
            class_name=self.class_name,
            filters=self.formatted_filters,
        )
        self.logger.debug(u"Querying WMI: {0}".format(wql))

        try:
            # From: https://msdn.microsoft.com/en-us/library/aa393866(v=vs.85).aspx
            flag_return_immediately = 0x10  # Default flag.
            flag_forward_only = 0x20
            flag_use_amended_qualifiers = 0x20000

            query_flags = flag_return_immediately | flag_forward_only

            # For the first query, cache the qualifiers to determine each
            # propertie's "CounterType"
            includes_qualifiers = self.is_raw_perf_class and self._property_counter_types is None
            if includes_qualifiers:
                self._property_counter_types = CaseInsensitiveDict()
                query_flags |= flag_use_amended_qualifiers

            raw_results = self.get_connection().ExecQuery(wql, "WQL", query_flags)

            results = self._parse_results(raw_results, includes_qualifiers=includes_qualifiers)

        except pywintypes.com_error:
            self.logger.warning(u"Failed to execute WMI query (%s)", wql, exc_info=True)
            results = []

        return results


0

Example 48

  def associators (self, wmi_association_class="", wmi_result_class=""):
    """Return a list of objects related to this one, optionally limited
    either by association class (ie the name of the class which relates
    them) or by result class (ie the name of the class which would be
    retrieved)::

      c = wmi.WMI ()
      pp = c.Win32_ParallelPort ()[0]

      for i in pp.associators (wmi_association_class="Win32_PortResource"):
        print i

      for i in pp.associators (wmi_result_class="Win32_PnPEntity"):
        print i
    """
    try:
      return [
        _wmi_object (i) for i in 
          self.ole_object.Associators_ (
           strAssocClass=wmi_association_class,
           strResultClass=wmi_result_class
         )
      ]
    except pywintypes.com_error:
      handle_com_error ()


0

Example 49

  def references (self, wmi_class=""):
    """Return a list of associations involving this object, optionally
    limited by the result class (the name of the association class).

    NB Associations are treated specially; although WMI only returns
    the string corresponding to the instance of each associated object,
    this module will automatically convert that to the object itself::

      c =  wmi.WMI ()
      sp = c.Win32_SerialPort ()[0]

      for i in sp.references ():
        print i

      for i in sp.references (wmi_class="Win32_SerialPortSetting"):
        print i
    """
    #
    # FIXME: Allow an actual class to be passed in, using
    # its .Path_.RelPath property to determine the string
    #
    try:
      return [_wmi_object (i) for i in self.ole_object.References_ (strResultClass=wmi_class)]
    except pywintypes.com_error:
      handle_com_error ()


0

Example 50

def MakeModuleForTypelib(typelibCLSID, lcid, major, minor, progressInstance = None, bGUIProgress = None, bForDemand = bForDemandDefault, bBuildHidden = 1):
	"""Generate support for a type library.
	
	Given the IID, LCID and version information for a type library, generate
	and import the necessary support files.
	
	Returns the Python module.  No exceptions are caught.

	Params
	typelibCLSID -- IID of the type library.
	major -- Integer major version.
	minor -- Integer minor version.
	lcid -- Integer LCID for the library.
	progressInstance -- Instance to use as progress indicator, or None to
	                    use the GUI progress bar.
	"""
	if bGUIProgress is not None:
		print "The 'bGuiProgress' param to 'MakeModuleForTypelib' is obsolete."

	import makepy
	try:
		makepy.GenerateFromTypeLibSpec( (typelibCLSID, lcid, major, minor), progressInstance=progressInstance, bForDemand = bForDemand, bBuildHidden = bBuildHidden)
	except pywintypes.com_error:
		return None
	return GetModuleForTypelib(typelibCLSID, lcid, major, minor)

Понравилась статья? Поделить с друзьями:
  • Pyttsx3 как изменить голос
  • Pyttsx3 init error
  • Qt creator ошибка при запуске приложения 0xc000005
  • Pythonpath как изменить
  • Qt creator ошибка qmake