Python中WBEM实例指定键值输出的条件语句实现需求
解决方案:过滤WBEM实例的指定键值对打印
你要实现的其实就是只输出指定字段的键值对,这个需求很好解决,只需要加一个目标字段列表,然后在遍历的时候做个判断就行,甚至可以处理字段不存在的情况避免报错。
修改后的完整代码
import pywbem # 保留你原有的连接初始化代码 conn = pywbem.WBEMConnection(server_uri, (user, password), default_namespace='root/cimv2') ClassesToCheck = [ 'CIM_Processor', ] # 定义你想要打印的指定键列表,按需添加或修改 target_keys = ['ModelName', 'Stepping', 'EnabledProcessorCharacteristics', 'CPUStatus'] for className in ClassesToCheck: instance_list = conn.EnumerateInstances(className) print(instance_list) for instance in instance_list: if verbose: print() print(f'Instance of : {className}') print('============================================================') # 遍历目标键列表,而非所有键值对 for key in target_keys: # 用get方法避免键不存在时抛出KeyError,默认值设为"N/A"表示该字段缺失 value = instance.get(key, "N/A") print(f'{key}: {value}')
关键逻辑说明
- 统一管理目标字段:把你关心的
ModelName、Stepping等字段放到target_keys列表里,后续要加新字段直接修改这个列表就行,维护起来很方便; - 定向遍历字段:不再遍历实例的所有键值对,而是直接遍历目标字段列表,精准只处理你需要的内容;
- 安全获取字段值:用
instance.get(key, "N/A")替代直接取instance[key],如果某个实例没有这个字段,会返回默认值"N/A",不会触发KeyError报错; - 格式优化:用f-string让打印的内容更清晰易读(你也可以保留原来的
%格式化方式,看个人习惯)。
注意:WBEM返回的键名通常是大小写敏感的,要确保target_keys里的名称和实例实际返回的键名完全一致,否则会匹配不到哦。
内容的提问来源于stack exchange,提问作者amitopenwriteup
相关产品推荐
相关产品推荐

