How to Close a program using python?

Question:

Is there a way that python can close a windows application (example: Firefox) ?

I know how to start an app, but now I need to know how to close one.

Asked By: acrs

||

Answers:

If you’re using Popen, you should be able to terminate the app using either send_signal(SIGTERM) or terminate().

See docs here.

Answered By: Demian Brecht

You want probably use os.kill http://docs.python.org/library/os.html#os.kill

Answered By: Elalfer
# 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)
Answered By: gh057

in windows you could use taskkill within subprocess.call:

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

/F forces process termination. Omitting it only asks firefox to close, which can work if the app is responsive.

Cleaner/more portable solution with psutil (well, for Linux you have to drop the .exe part or use .startwith("firefox"):

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

that will kill all processes named firefox.exe

By the way os.kill(pid) is "overkill" (no pun intended). process has a kill() method, so:

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

In order to kill a python tk window named MyappWindow under MS Windows:

from os import system
system('taskkill /F /FI "WINDOWTITLE eq MyappWindow" ')

stars maybe used as wildcard:

from os import system 
system('taskkill /F /FI "WINDOWTITLE eq MyappWind*" ')

Please, refer to “taskkill /?” for additional options.

Answered By: Carlos ODL

On OS X:

  1. Create a shell script and put:
killall Application

Replace Application with a running app of your choice.

In the same directory as this shell script, make a python file.
In the python file, put these two lines of code:

from subprocess import Popen
Popen('sh shell.sh', shell=True)

Replace shell.sh with the name of your created shell script.

Answered By: mehtaarn000

An app(a running process) can be closed by it’s name using it’s PID(Process ID) and by using psutil module. Install it in cmd using the command:

pip install psutil

After installing, run the code given below in any .py file:

import psutil
def close_app(app_name):
    running_apps=psutil.process_iter(['pid','name']) #returns names of running processes
    found=False
    for app in running_apps:
        sys_app=app.info.get('name').split('.')[0].lower()

        if sys_app in app_name.split() or app_name in sys_app:
            pid=app.info.get('pid') #returns PID of the given app if found running
            
            try: #deleting the app if asked app is running.(It raises error for some windows apps)
                app_pid = psutil.Process(pid)
                app_pid.terminate()
                found=True
            except: pass
            
        else: pass
    if not found:
        print(app_name+" not found running")
    else:
        print(app_name+'('+sys_app+')'+' closed')

close_app('chrome')

After running the code above you may see the following output if google chrome was running:

>>> chrome(xyz) closed

Feel free to comment in case of any error

Answered By: Prashantzz
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.