views:

295

answers:

1

Is there a way to detect whether sys.stdout is attached to a console terminal or not? For example, I want to be able to detect if foo.py is run via:

$ python foo.py  # user types this on console

OR

$ python foo.py > output.txt # redirection
$ python foo.py | grep ....  # pipe

The reason I ask this question is that I want to make sure that my progressbar display happens only in the former case (real console).

+13  A: 
if sys.stdout.isatty():
    # You're running in a real terminal
else:
    # You're being piped or redirected
RichieHindle
+1 good to know
zdmytriv