web-dev-qa-db-ja.com

sys.stdoutが端末に接続されているかどうかを検出するにはどうすればよいですか?

sys.stdoutがコンソール端末に接続されているかどうかを検出する方法はありますか?たとえば、foo.pyが次の方法で実行されているかどうかを検出できるようにします。

$ python foo.py  # user types this on console

OR

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

この質問をする理由は、プログレスバーの表示が前者の場合(実際のコンソール)でのみ行われるようにするためです。

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