173 votes

Comment détecter si le sys.stdout est attaché à la borne ou pas?

Est-il un moyen de détecter si sys.stdout est attaché à un terminal de console ou pas? Par exemple, je veux être en mesure de détecter si foo.py est géré par:

$ python foo.py  # user types this on console

OU

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

La raison pour laquelle je pose cette question c'est que je veux faire en sorte que ma progressbar affichage ne se produit que dans le premier cas (console).

273voto

RichieHindle Points 98544
if sys.stdout.isatty():
    # You're running in a real terminal
else:
    # You're being piped or redirected

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X