使用Python psutil获取macOS运行进程时如何单独提取进程名称?
解决方法
报错的核心原因是你遍历得到的app是psutil.Process类的实例对象,不是字符串类型,因此不存在字符串的split方法。psutil已经内置了直接读取进程名称的方法,不需要手动解析打印输出的字符串。
推荐实现方案
直接调用Process实例的name()方法即可获取进程名,process_iter传入参数预加载需要的属性还可以提升执行效率,代码示例如下:
import psutil for proc in psutil.process_iter(['name']): # 直接输出进程名称 print(proc.name())
补充说明
- 你之前直接打印
app得到的格式化字符串,是Process类自定义的字符串输出逻辑,仅用于直观展示对象信息,不是对象本身的类型。 - 除了进程名之外,你还可以通过实例的
pid属性获取进程ID、status()方法获取进程状态、create_time()方法获取进程启动时间,无需手动解析字符串。
如果确实有特殊场景需要解析打印输出的字符串(极不推荐,容易因psutil版本更新出现格式兼容问题),可以先将实例转为字符串再处理,示例如下:
import psutil applist = list(psutil.process_iter()) for app in applist: app_str = str(app) name = app_str.split("name='")[1].split("',")[0] print(name)
内容的提问来源于stack exchange,提问作者Leshem Xiang
相关产品推荐
相关产品推荐

