如何用Python关闭程序?
有没有办法让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)