【问题标题】:How to know if the output is going to a terminal or not? [duplicate]如何知道输出是否到终端? [复制]
【发布时间】:2012-11-20 02:24:11
【问题描述】:

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

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

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

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

【问题讨论】:

  • @Douglas:不,那是针对 C 或 C++。仅仅因为 python os 库有一个具有相同名称和函数的函数并不会使这个问题成为这个问题的欺骗。 可能这里已经有一个关于 SO 的 python 问题,而是被骗了。
  • 我注意到了 C 标签,但没有注意到 python 标签,对此感到抱歉。 (实际上,我在寻找骗子时遇到了this answer,但因为我一直在寻找 C ,所以继续进行......)

标签: python c linux bash xterm


【解决方案1】:

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

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

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

【讨论】:

  • 我想我可以使用“1”,因为它始终是标准输出的文件描述符。
  • @LtWorf:那是你可以使用的捷径,是的。
猜你喜欢
  • 1970-01-01
  • 2013-02-19
  • 2017-02-08
  • 2010-11-07
  • 2014-05-08
  • 2016-05-25
  • 2011-09-12
  • 2016-07-26
  • 2012-08-30
相关资源
最近更新 更多