2

可能重复:
检测标准输入是否是 C/C++/Qt 中的终端或管道?

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

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

我知道这是可能的,因为“ls”可以做到,有人知道怎么做吗?

4

1 回答 1

5

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

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

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

于 2012-12-02T12:45:14.087 回答