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

如何实现Python无限循环检测进程并自动启动指定文件夹随机文件?

解决Python进程检测无限循环问题

你的代码只执行一次就终止,核心问题是缺少无限循环逻辑,同时还有几处逻辑细节需要修正。以下是修改后的完整代码,以及关键改动说明:

修改后的代码

import psutil, os, random, webbrowser, time

# 配置参数
TARGET_PROCESS = "vlc"
CHECK_INTERVAL = 5  # 检测间隔(秒)
BASE_DIR = r"C:\Users\"  # 用原始字符串避免转义问题

while True:
    process_running = False
    # 遍历检测进程
    for proc in psutil.process_iter():
        try:
            # 加入try-except避免进程遍历中出现权限/进程已退出问题
            if TARGET_PROCESS in proc.name().lower():
                process_running = True
                print(f"进程正在运行: {proc.name()}")
                break  # 找到目标进程后直接跳出循环,减少不必要遍历
        except (psutil.NoSuchProcess, psutil.AccessDenied):
            continue

    # 如果进程未运行,随机打开文件夹内文件
    if not process_running:
        # 筛选文件夹内的文件(排除子文件夹)
        file_list = [
            x for x in os.listdir(BASE_DIR)
            if os.path.isfile(os.path.join(BASE_DIR, x))
        ]
        if file_list:  # 先判断是否有文件,避免空列表报错
            selected_file = random.choice(file_list)
            file_path = os.path.join(BASE_DIR, selected_file)
            print(f"VLC未运行,启动文件: {selected_file}")
            webbrowser.open(file_path)
        else:
            print(f"{BASE_DIR} 目录下没有可打开的文件")

    # 等待指定间隔后再次检测
    time.sleep(CHECK_INTERVAL)

关键改动说明

  • 加入无限循环:用while True:包裹整个检测逻辑,让代码持续运行
  • 优化进程检测逻辑:
    • 用process_running布尔变量替代原字符串判断,逻辑更清晰
    • 遍历进程时加入try-except,处理可能的权限问题或进程已退出的异常
    • 找到目标进程后直接break,减少不必要的遍历操作
  • 修正路径问题:用原始字符串r"C:\Users\"避免转义错误
  • 增加检测间隔:time.sleep(CHECK_INTERVAL)控制每次检测的间隔,避免CPU占用过高
  • 增加文件列表非空判断:防止目标文件夹为空时random.choice()报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:00:20