2009-07-02 19 views
104

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

$ python foo.py # user types this on console 

OR

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

私はこの質問を理由は、私は確信して私のプログレスバーを表示することをしたいということです前者の場合にのみ起こります(実際のコンソール)。

答えて

164
if sys.stdout.isatty(): 
    # You're running in a real terminal 
else: 
    # You're being piped or redirected 
+22

'のpython -c "インポートsysを、印刷(sys.stdout.isatty())" を比較、自分の殻に実証するために、'( 'true'をを記述する必要があります)'のpython -c「輸入SYSで、印刷を(sys.stdout.isatty()) "| grep。 '(' False'と書くべきです)。 –

関連する問題