web-dev-qa-db-fra.com

Comment détecter si sys.stdout est attaché au terminal ou non?

Existe-t-il un moyen de détecter si sys.stdout est connecté ou non à un terminal de console? Par exemple, je veux pouvoir détecter si foo.py est exécuté via:

$ python foo.py  # user types this on console

OR

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

La raison pour laquelle je pose cette question est que je veux m'assurer que mon affichage de la barre de progression ne se produit que dans le premier cas (console réelle).

123
Sridhar Ratnakumar
if sys.stdout.isatty():
    # You're running in a real terminal
else:
    # You're being piped or redirected
196
RichieHindle