python自启动exeimportpsutilimportsubprocessimportosdefcheck_and_start_exe(exe_name):# 获取文件名部分防止传入的是路径 nameos.path.basename(exe_name)#1.检测进程是否存在#psutil.process_iter()会迭代所有正在运行的进程forproc in psutil.process_iter([name]):print(proc)try:# 比较进程名称(注意Windows下进程名通常包含.exe)ifproc.info[name]name:print(f{name} 已经在运行中 (PID: {proc.pid}))returnTrueexcept(psutil.NoSuchProcess,psutil.AccessDenied,psutil.ZombieProcess):# 进程可能在检查瞬间结束了或者没有权限访问忽略即可 pass #2.如果没找到则启动它print(f{name} 未运行正在启动...)try:# 使用 subprocess.Popen 启动程序 # 如果 test.exe 在当前目录直接写名字如果在特定路径请写绝对路径 processsubprocess.Popen([exe_name])print(f{name} 启动成功 (新 PID: {process.pid}))returnFalse except FileNotFoundError:print(f错误找不到文件 {exe_name}。请确保它在当前目录或系统 PATH 中。)returnNone except Exception as e:print(f启动失败: {e})returnNoneif__name____main__:# 替换为你的 exe 文件名或路径 target_exetest.exepathrD:\TOOL\electricCollimator\test.execheck_and_start_exe(path)
python自启动exe
python自启动exeimportpsutilimportsubprocessimportosdefcheck_and_start_exe(exe_name):# 获取文件名部分防止传入的是路径 nameos.path.basename(exe_name)#1.检测进程是否存在#psutil.process_iter()会迭代所有正在运行的进程forproc in psutil.process_iter([name]):print(proc)try:# 比较进程名称(注意Windows下进程名通常包含.exe)ifproc.info[name]name:print(f{name} 已经在运行中 (PID: {proc.pid}))returnTrueexcept(psutil.NoSuchProcess,psutil.AccessDenied,psutil.ZombieProcess):# 进程可能在检查瞬间结束了或者没有权限访问忽略即可 pass #2.如果没找到则启动它print(f{name} 未运行正在启动...)try:# 使用 subprocess.Popen 启动程序 # 如果 test.exe 在当前目录直接写名字如果在特定路径请写绝对路径 processsubprocess.Popen([exe_name])print(f{name} 启动成功 (新 PID: {process.pid}))returnFalse except FileNotFoundError:print(f错误找不到文件 {exe_name}。请确保它在当前目录或系统 PATH 中。)returnNone except Exception as e:print(f启动失败: {e})returnNoneif__name____main__:# 替换为你的 exe 文件名或路径 target_exetest.exepathrD:\TOOL\electricCollimator\test.execheck_and_start_exe(path)