How do you make Python wait so that you can read the output?

I've always been a heavy user of Notepad2, as it is fast, feature-rich, and supports syntax highlighting. Recently I've been using it for Python.

My problem: when I finish editing a certain Python source code, and try to launch it, the screen disappears before I can see the output pop up. Is there any way for me to make the results wait so that I can read it, short of using an input() or time-delay function? Otherwise I'd have to use IDLE, because of the output that stops for you to read.

(My apologies if this question is a silly one, but I'm very new at Python and programming in general.)


If you don't want to use raw_input() or input() you could log your output (stdout, stderr) to a file or files.

You could either use the logging module, or just redirect sys.stdout and sys.stderr.

I would suggest using a combination of the logging and traceback if you want to log errors with their trace stack.

Something like this maybe:

import logging, traceback
logging.basicConfig(filename=r'C:\Temp\log.txt', level=logging.DEBUG)

    #do some stuff
    logging.debug('I did some stuff!')
except SomeException:

Here's an example of redirecting stdout and stderr:

if __name__ == '__main__':
    save_out = sys.stdout  # save the original stdout so you can put it back later
    out_file = open(r'C:\Temp\out.txt', 'w')
    sys.stdout = out_file

    save_err = sys.stderr
    err_file = open(r'C:\Temp\err.txt', 'w')
    sys.stderr = err_file

    main()  #call your main function

    sys.stdout = save_out  # set stdout back to it's original object
    sys.stderr = save_err


I'm going to point out that this is not the easiest or most straight forward way to go.

This is a "problem" with Notepad2, not Python itself.

Unless you want to use input()/sleep (or any other blocking function) in your scripts, I think you have to turn to the settings in Notepad2 and see what that has to offer.

you could start in the command window. e.g.:


adding raw_input() (or input() in py3k) at the end of your script will let you freeze it for until enter is pressed, but it's not a good thing to do.

You can add a call to raw_input() to the end of your script in order to make it wait until you press Enter.

Need Your Help

Dependency injection and life time of IDisposable objects

c# dependency-injection ninject idisposable object-lifetime

I am trying to develop a library using dependency injection approach (with Ninject) and I am having some kind of confusion likely because of my incorrect design. In summary, my design approach is