如何知道输出是否转到终端?

时间:2012-12-02 12:43:31

标签: python c linux bash xterm

  

可能重复:
  Detect if stdin is a terminal or pipe in C/C++/Qt?

我想知道我的程序的输出是直接转到终端还是被重定向到管道或文件。

因为如果它进入终端我想输出转义序列来制作彩色文本,但是在文件或管道中那些不受欢迎。

我知道这是可能的,因为“ls”会这样做,有谁知道怎么做?

1 个答案:

答案 0 :(得分:5)

使用stdout流的文件描述符上的os.isatty() function或您需要测试的任何其他文件:

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

对于打开的文件(如sys.stdout流),.fileno() method返回必要的描述符。

相关问题