Ошибка при попытке использовать объекты wmi (python) - PullRequest
3 голосов
/ 03 марта 2011

Я пытаюсь написать сценарий, который определяет, является ли машина, на которой выполняется сценарий, виртуальной машиной или физической машиной, и я не понимаю ошибку и как ее исправить.

import wmi

def sys_info():

    objWMIService = wmi.GetObject("winmgmts:\root\cimv2")
    colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")

    for objItem in colItems:
        print "inside"
        Manufacturer = objItem.Manufacturer
        if Manufacturer == "Microsoft Corporation":
            print "Virtual Machine"
        else:
            print "Not in one"

Ошибка:

    Traceback (most recent call last):
  File "C:\Documents and Settings\xxx\Desktop\Python\Practice Code\System information\trial.py", line 16, in <module>
    sys_info()
  File "C:\Documents and Settings\xxx\Desktop\Python\Practice Code\System information\trial.py", line 5, in sys_info
    objWMIService = wmi.GetObject("winmgmts:""\root\cimv2")
  File "C:\Python26\lib\site-packages\win32com\client\__init__.py", line 72, in GetObject
    return Moniker(Pathname, clsctx)
  File "C:\Python26\lib\site-packages\win32com\client\__init__.py", line 87, in Moniker
    moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)
com_error: (-2147217375, 'OLE error 0x80041021', None, None)

Я надеюсь, что кто-то может помочь, я довольно плохо знаком с Python. Спасибо.

1 Ответ

5 голосов
/ 03 марта 2011

Улучшите ситуацию, если вы измените:

objWMIService = wmi.GetObject("winmgmts:\root\cimv2") 

на

objWMIService = wmi.GetObject(r"winmgmts:\root\cimv2") 

Последовательность '\ r' в '\ root' будет интерпретироваться как символ <CR> вваш код.Вы должны либо удвоить '\', чтобы избежать их, чтобы они рассматривались как обратные косые черты, либо поставить перед первой двойной кавычкой 'r' (как я уже сделал), чтобы указать Python, что это должно быть "сырым"строковый литерал.Необработанные строки ничем не отличаются от обычных строк, но синтаксис необработанных строк указывает компилятору Python , а не интерпретировать обратную косую черту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...