首页 > 解决方案 > 从 win32com.client.CDispatch 对象获取命名元组变量

问题描述

我正在尝试使用 pywin32 的 win32com 模块获取有关给定 Windows 机器系统的一些信息。

例如,此脚本查找系统可能有多少 CPU 插槽,并告诉我每个插槽上有多少物理和逻辑内核。

import win32com.client
winmgmts_root = win32com.client.GetObject("winmgmts:root\\cimv2")
cpus = winmgmts_root.ExecQuery("Select * from Win32_Processor")
    for cpu in cpus:
        print(cpu.NumberOfCores)
        print(cpu.NumberOfLogicalProcessors)

cpu问题是,当我尝试查看循环中的对象时,这些变量不存在:

for cpu in cpus:
    for name in dir(cpu):
        value = getattr(cpu, name)
        print("name: {}".format(name))
        print("value: {}".format(value))

这产生了大量的方法,_因此它们不应该被使用,并且没有指示命名的元组变量NumberOfCoresNumberOfLogicalProcessorscoem 来自哪里,即使我可以确认它们存在。

如何获取这些命名元组变量的列表?

标签: pythonpywin32win32com

解决方案


我是个傻瓜 -cpu来自对象的变量cpus已命名为类中定义的元组Win32_Processor

https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-processor


推荐阅读