2009-07-02 25 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

爲了證明你的shell,比較`蟒蛇-c 「進口SYS;打印(sys.stdout.isatty())」`(應該寫TRUE;)與`蟒蛇-c「進口SYS;打印(sys.stdout.isatty())「| grep。(應該寫'False')。 – 2013-10-28 19:17:52

相關問題