如何实现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
相关产品推荐
相关产品推荐

