如何按进程分组打印字典中存储的Windows进程名称与对应属性值
语法错误修正
你原有get_processes函数存在语法错误,执行WMI查询的行缺少字符串闭合引号,修正如下:
# 原错误写法 colprocs = wmi.ExecQuery("Select * from Win32_Process) # 修正后写法 colprocs = wmi.ExecQuery("Select * from Win32_Process")
方案1:不修改原函数,调整打印逻辑
你返回的字典中,Caption和Creation Date两个列表的相同索引对应同一个进程的两个属性,按索引遍历即可实现按进程分组输出:
d = get_processes() for idx in range(len(d["Caption"])): print(f"Process {idx+1}...") print(f"Caption: {d['Caption'][idx]}") print(f"Creation Date: {d['Creation Date'][idx]}") # 进程之间增加空行分隔 print()
方案2:优化原函数返回结构(更推荐)
如果可以调整原函数的返回格式,建议改为返回单进程字典组成的列表,无需依赖索引对应属性,后续扩展性更强:
修改后的函数代码
from win32com.client import GetObject wmi = GetObject("winmgmts:") def get_processes(): process_list = [] colprocs = wmi.ExecQuery("Select * from Win32_Process") for item in colprocs: # 每个进程单独存为一个字典 process_list.append({ "Caption": item.Caption, "Creation Date": item.CreationDate }) return process_list
对应打印代码
d = get_processes() for idx, proc in enumerate(d, start=1): print(f"Process {idx}...") print(f"Caption: {proc['Caption']}") print(f"Creation Date: {proc['Creation Date']}") print()
内容的提问来源于stack exchange,提问作者adlud06
相关产品推荐
相关产品推荐

