如何在python中访问wmi?

2024-09-24 22:17:36 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试图从here访问数据

在Python中。如您所见,它使用wmi。我以前尝试过在python中使用wmi,但我在解释它们提供给我的数据时遇到了困难。请耐心对待我,因为我对wmi的工作方式一无所知。它说wmi数据存储在根/OpenHardwareMontor中,并且它使用两个不同的wmi类(硬件和传感器)。但所有这些信息都在我脑海中浮现。

有人能给我一些示例代码从中读取一些数据吗?

例如,检查cpu核心1频率的代码。

编辑:我已经开始工作了。我运行以下代码:

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关联的值而忽略所有其他值?


Tags: 数据代码datahere方式loadwmiram
1条回答
网友
1楼 · 发布于 2024-09-24 22:17:36

使用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

myQuery = c.query(wql)
myQuery.Availability 

输出:

2

有关详细信息,请尝试WMI cookbook

编辑1:

使用if语句和in可以做您想做的事情。

for Temperature in c.sensor():
    if "/intelcpu/0/temperature/1" in Temperature.identifier:
        print Temperature.identifier
        print Temperature.value 

相关问题 更多 >