You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python psutil检测notepad.exe时未触发预期输出与异常问题

问题根因

你的代码逻辑存在两处核心偏差,直接导致未启动记事本时无输出:

  • print("n") 被错误放在进程遍历的except异常分支下,只有遍历某一个进程时触发访问错误(如权限不足、进程遍历中途退出)才会执行,和「未检测到notepad.exe」的判定条件完全无关
  • 缺失「遍历完所有进程仍未匹配到目标进程」的判定分支:如果遍历全程既没碰到notepad.exe,也没触发任何进程访问异常,代码不会执行任何打印操作
  • 附带逻辑漏洞:匹配到notepad.exe后没有终止遍历,若系统存在多个同名进程会重复打印"y",且遍历过程中插入的sleep(1)会拖慢检测效率
修正后代码
import psutil
from time import sleep

target_process = "notepad.exe"
is_running = False

for proc in psutil.process_iter():
    try:
        if proc.name().lower() == target_process.lower():
            is_running = True
            break
    except (psutil.NoSuchProcess, psutil.AccessDenied):
        # 跳过访问失败、遍历过程中已退出的进程
        continue

print("y" if is_running else "n")
sleep(1)
逻辑说明
  • 提前初始化布尔标记位is_running,默认值为False,代表初始状态下未检测到目标进程
  • 遍历进程时仅做名称匹配,一旦匹配到目标进程立刻将标记位置为True并跳出循环,避免无效遍历
  • 异常捕获仅针对进程访问的两类常见错误,捕获后直接跳过当前异常进程,不参与最终结果判定
  • 所有进程遍历完成后,再根据标记位的状态统一输出结果,保证找到/未找到目标进程两种场景下都有对应输出

内容的提问来源于stack exchange,提问作者whytfnotworking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:33:22