2015-11-25 4 views
1
def getPnpDeviceInfo(): 
    c = wmi.WMI() 
    wql = "SELECT * FROM Win32_PnPEntity WHERE Manufacturer != 'Microsoft' AND NOT PNPDeviceID LIKE 'ROOT\\%'" 
    print ("All physical PNP devices") 
    for J in c.query(wql): 
    print(J) 

Эта функция (запрос), как правило, возвращает все физические устройства PNP, вот пример вывода:Как извлечь конкретный атрибут из экземпляра Win32_PnPEntity?

instance of Win32_PnPEntity 
{ 
Caption = "ACPI Lid"; 
ClassGuid = "{4d36e97d-e325-11ce-bfc1-08002be10318}"; 
ConfigManagerErrorCode = 0; 
ConfigManagerUserConfig = FALSE; 
CreationClassName = "Win32_PnPEntity"; 
Description = "ACPI Lid"; 
DeviceID = "ACPI\\PNP0C0D\\2&DABA3FF&3"; 
HardwareID = {"ACPI\\PNP0C0D", "*PNP0C0D"}; 
Manufacturer = "(Standard system devices)"; 
Name = "ACPI Lid"; 
PNPDeviceID = "ACPI\\PNP0C0D\\2&DABA3FF&3"; 
Status = "OK"; 
SystemCreationClassName = "Win32_ComputerSystem"; 
SystemName = "SUSDUTTA-LAP"; 
}; 

Вопрос, если я хочу, чтобы извлечь только «PNPDeviceID» экземпляра, как сделать это в python, не меняя WQL?

ответ

2

Неважно, фигурирует в WMI python doc. WQL возвращает ответ в виде списка, и существует заводский метод «__getattr__(self,'attribute_name'_)», который возвратил данные с использованием определенного имени атрибута.

 Смежные вопросы

  • Нет связанных вопросов^_^