如何用Python关闭程序?

32 投票
8 回答
120709 浏览
提问于 2025-04-16 15:31

有没有办法让Python关闭一个Windows应用程序(比如:Firefox)?

我知道怎么启动一个应用程序,但现在我想知道怎么关闭一个。

8 个回答

7

在Windows系统中,你可以通过在 subprocess.call 中使用 taskkill 来结束进程:

subprocess.call(["taskkill","/F","/IM","firefox.exe"])

/F 是强制结束进程的意思。如果不加这个参数,只是请求Firefox关闭,这样做的前提是应用程序还在正常响应。

如果想要一个更干净、更通用的解决方案,可以使用 psutil(不过在Linux上,你需要去掉 .exe 后缀,或者用 .startwith("firefox")):

import psutil,os
for pid in (process.pid for process in psutil.process_iter() if process.name()=="firefox.exe"):
    os.kill(pid)

这样做会结束所有名为 firefox.exe 的进程。

顺便提一下, os.kill(pid) 是一种“过度”的做法(没有恶意的意思)。其实 process 还有一个 kill() 方法,所以:

for process in (process for process in psutil.process_iter() if process.name()=="firefox.exe"):
    process.kill()
7

如果你在使用 Popen,你可以通过 send_signal(SIGTERM) 或者 terminate() 来结束这个应用程序。

这里有相关文档。

33

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个功能时,发现它的表现和预期的不一样。这种情况下,通常需要仔细检查代码,看看是不是哪里写错了,或者有没有遗漏什么重要的步骤。

另外,很多时候,其他开发者会在网上分享他们遇到的问题和解决方案,这些信息可以帮助我们更快地找到答案。通过阅读这些讨论,我们可以学习到很多实用的技巧和经验,避免走入同样的误区。

总之,编程的过程中,遇到问题是很正常的,关键是要保持耐心,逐步分析和解决问题,同时也要善于利用网络资源,向其他人请教或寻找灵感。

# I have used subprocess comands for a while
# this program will try to close a firefox window every ten secounds

import subprocess
import time

# creating a forever loop
while 1 :
    subprocess.call("TASKKILL /F /IM firefox.exe", shell=True)
    time.sleep(10)

撰写回答