2012-11-14 54 views
3

是否有某種方法來檢查python進程的輸出是否正在寫入文件?我希望能夠做到這樣的事情:如何檢查文件是否寫入終端?

if is_writing_to_terminal: 
    sys.stdout.write('one thing') 
else: 
    sys.stdout.write('another thing') 

回答

1

使用os.isatty。這需要一個文件描述符(fd),可以通過fileno成員獲得。

>>> from os import isatty 
>>> isatty(sys.stdout.fileno()) 
True 

如果你想支持任意文件喜歡(如StringIO),那麼你必須檢查類文件是否具有相關聯的FD,因爲不是所有的文件,喜歡做的事:

hasattr(f, "fileno") and isatty(f.fileno()) 
4

您可以使用os.isatty()檢查文件描述符是否是終端:

if os.isatty(sys.stdout.fileno()): 
    sys.stdout.write('one thing') 
else: 
    sys.stdout.write('another thing') 
+0

嗯,所以有os.isatty之間'什麼區別(sys.stdout.fileno())'和['sys.stdout.isatty ()'](http://docs.python.org/2 /library/stdtypes.html#file.isatty)? – Shep