How do I detect whether sys.stdout is attached to terminal or not?
console, python, terminal
Solution
This can be detected using `isatty`:
if sys.stdout.isatty():
# You're running in a real terminal
else:
# You're being piped or redirected
To demonstrate this in a shell:
- `python -c "import sys; print(sys.stdout.isatty())"` should write True
- `python -c "import sys; print(sys.stdout.isatty())" | cat` should write False
Problem
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).