## 16.1 Interactive Mode 

## 16.1.1 Error Handling 

## APPENDIX 

When an error occurs, the interpreter prints an error message and a stack trace. In interactive mode, it then returns to the primary prompt; when input came from a file, it exits with a nonzero exit status after printing the stack trace. (Exceptions handled by an except clause in a try statement are not errors in this context.) Some errors are unconditionally fatal and cause an exit with a nonzero exit; this applies to internal inconsistencies and some cases of running out of memory. All error messages are written to the standard error stream; normal output from executed commands is written to standard output. 

Typing the interrupt character (usually $_{Control-C}$or Delete ) to the primary or secondary prompt cancels the input and returns to the primary prompt. 1 Typing an interrupt while a command is executing raises the $_{KeyboardInterrupt}$exception, which may be handled by a$_{try}$ statement. 

## 16.1.2 Executable Python Scripts 

On BSD’ish Unix systems, Python scripts can be made directly executable, like shell scripts, by putting the line 

#!/usr/bin/env python3.5 

(assuming that the interpreter is on the user’s$_{PATH}$ ) at the beginning of the script and giving the file an executable mode. The$_{#!}$ must be the first two characters of the file. On some platforms, this first line must end with a Unix-style line ending ($_{'
'}$ ), not a Windows ($_{'\r
'}$ ) line ending. Note that the hash, or pound, character,$_{'#'}$ , is used to start a comment in Python. 

The script can be given an executable mode, or permission, using the$_{chmod}$ command. 

$ chmod +x myscript.py 

On Windows systems, there is no notion of an “executable mode”. The Python installer automatically associates$_{.py}$ files with$_{python.exe}$so that a double-click on a Python file will run it as a script. The extension can also be .pyw , in that case, the console window that normally appears is suppressed. 

