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

LtW*_*orf 2 c python linux bash xterm

可能重复:
检测stdin是C/C++/Qt中的终端还是管道?

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

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

我知道这是可能的,因为"ls"做到了,有谁知道怎么做?

Mar*_*ers 5

使用流的filedescriptor上的os.isatty()函数stdout或您需要测试的任何其他文件:

>>> import sys, os
>>> os.isatty(sys.stdout.fileno())
True
Run Code Online (Sandbox Code Playgroud)

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