How to exit Python script in Command Prompt?
It indeed depends on the OS, and probably on the version of Python you are using.
As you mentioned, ctrl+C does not work on your Windows 10 with Python 3.6, but it does work on my Windows 10 with Python 3.4. Therefore, you really need to try and see what works for you.
Try the following commands, and keep the one that works:
- ctrl+Z then Return
In addition, the following should work with any terminal:
Trivia: if you type
quit and hit Return, the console tells you, at least for Python 3.4:
Use quit() or Ctrl-Z plus Return to exit
How to stop python script using command line
Since you want to be able to control via command line, one way to do this is to use a temporary "flag" file, that will be created by
myprogram.py start, and deleted by
myprogram.py stop. The key is that, while the file exists,
myprogram.py will keep running the loop.
FLAGFILENAME = 'startstop.file'
# In this case I am using a simple file, but the flag could be
# anything else: an entry in a database, a specific time...
with open(FLAGFILENAME, "w") as f:
def get_from_ftp(server, login, password):
if len(sys.argv) < 2:
print "Usage: <program> start|stop"
start_stop = sys.argv
if start_stop == 'start':
if start_stop == 'stop':
server, login, password = 'a', 'b', 'c'
get_from_ftp(server, login, password)
if __name__ == '__main__':
As you can imagine, the flag could be anything else. This is very simple, and if you want to have more than two instances running, then you should at least name the files differently per instance (for example, with a CLI parameter) so you can selectively stop each instance.
I do like the idea proposed by @cdarke about intercepting and handling CTRL+C, though, and the mechanism is very similar to my approach, and works well with a single instance.
How do I stop a Python script from running in my command line?
You can kill it from task manager.
Programmatically stop execution of python script?
sys.exit() will do exactly what you want.
How do I terminate a script?
details from the
sys module documentation:
Exit from Python. This is implemented by raising the
SystemExitexception, so cleanup actions specified by finally clauses
trystatements are honored, and it is possible to intercept the
exit attempt at an outer level.
The optional argument arg can be an integer giving the exit status
(defaulting to zero), or another type of object. If it is an integer,
zero is considered “successful termination” and any nonzero value is
considered “abnormal termination” by shells and the like. Most systems
require it to be in the range 0-127, and produce undefined results
otherwise. Some systems have a convention for assigning specific
meanings to specific exit codes, but these are generally
underdeveloped; Unix programs generally use 2 for command line syntax
errors and 1 for all other kind of errors. If another type of object
is passed, None is equivalent to passing zero, and any other object is
stderrand results in an exit code of 1. In particular,
sys.exit("some error message")is a quick way to exit a program when
an error occurs.
exit()ultimately “only” raises an exception, it will only exit
the process when called from the main thread, and the exception is not
Note that this is the 'nice' way to exit. @glyphtwistedmatrix below points out that if you want a 'hard exit', you can use
os._exit(*errorcode*), though it's likely os-specific to some extent (it might not take an errorcode under windows, for example), and it definitely is less friendly since it doesn't let the interpreter do any cleanup before the process dies. On the other hand, it does kill the entire process, including all running threads, while
sys.exit() (as it says in the docs) only exits if called from the main thread, with no other threads running.