Как получить доступ к wmi в python?
Так я пытаюсь получить доступ к данным из здесь
в Python. Как вы можете видеть, он использует WMI. Я пытался использовать wmi в python раньше, но у меня возникли проблемы с интерпретацией данных, которые они мне дают. Пожалуйста, будьте терпеливы со мной, поскольку я не знаю, как работает wmi. В нем говорится, что данные wmi хранятся в root/OpenHardwareMontor и что он использует два разных класса wmi(аппаратное обеспечение и датчик). Но вся эта информация проходит через мою голову.
может кто-нибудь, пожалуйста, дайте мне образец кода, чтобы прочитать некоторые данные из этого?
например, код для проверки частоты ядра процессора 1.
EDIT:у меня вроде как работает. я запускаю этот код:
for Temperature in c.sensor():
print Temperature.identifier
print Temperature.value
и я получаю это:
/hdd/0/load/0
37.6608924866
/intelcpu/0/temperature/1
53.0
/intelcpu/0/temperature/0
42.0
/ram/data/1
2.88324356079
/intelcpu/0/load/2
1.53846144676
/hdd/0/temperature/0
43.0
/intelcpu/0/load/0
2.30768918991
/intelcpu/0/clock/1
1463.29663086
/intelcpu/0/clock/0
133.02696228
/intelcpu/0/clock/2
1463.29663086
/ram/load/0
49.224521637
/ram/data/0
2.79517364502
/intelcpu/0/load/1
3.07692289352
Как я могу запрос только значение, связанное с идентификатором / intelcpu/0 / temperature / 1 игнорируя все остальные значения?
1 ответов
самый простой пример использования WMI:
c = wmi.WMI()
wql = "Select * From Win32_SerialPort"
for item in c.query(wql):
print item
Выход Пример:
instance of Win32_SerialPort
{
Availability = 2;
Binary = TRUE;
Caption = "SpectrumAnalyzer1 (COM15)";
ConfigManagerErrorCode = 0;
ConfigManagerUserConfig = FALSE;
CreationClassName = "Win32_SerialPort";
Description = "SpectrumAnalyzer1";
DeviceID = "COM15";
MaxBaudRate = 128000;
MaximumInputBufferSize = 0;
MaximumOutputBufferSize = 0;
Name = "SpectrumAnalyzer1 (COM15)";
OSAutoDiscovered = TRUE;
PNPDeviceID = "USB\VID_10C4&PID_ED00\1269376";
PowerManagementCapabilities = {1};
PowerManagementSupported = FALSE;
ProviderType = "RS232 Serial Port";
SettableBaudRate = TRUE;
SettableDataBits = TRUE;
SettableFlowControl = TRUE;
SettableParity = TRUE;
SettableParityCheck = TRUE;
SettableRLSD = TRUE;
SettableStopBits = TRUE;
Status = "OK";
StatusInfo = 3;
Supports16BitMode = FALSE;
SupportsDTRDSR = TRUE;
SupportsElapsedTimeouts = TRUE;
SupportsIntTimeouts = TRUE;
SupportsParityCheck = TRUE;
SupportsRLSD = TRUE;
SupportsRTSCTS = TRUE;
SupportsSpecialCharacters = TRUE;
SupportsXOnXOff = TRUE;
SupportsXOnXOffSet = TRUE;
SystemCreationClassName = "Win32_ComputerSystem";
SystemName = ".......";
};
вы можете получить доступ к каждой item
by:
myQuery = c.query(wql)
myQuery.Availability
выход:
2
для получения дополнительной информации попробуйте WMI рецепты.
правка #1:
использование операторов if и in
вы можете делать, что хотите.
for Temperature in c.sensor():
if "/intelcpu/0/temperature/1" in Temperature.identifier:
print Temperature.identifier
print Temperature.value