如何识别脚本是否在 tty 上运行?

我希望我的脚本在交互式 shell 会话中和在使用重定向标准输出(例如当通过管道传输到其他命令时)运行时有不同的作用。

如何识别在 Python 脚本中发生的这两种情况中的哪一种?

现有程序中这种行为的示例: grep —— color = auto 在交互式 shell 中运行时匹配,但在通过管道传输到其他程序时不匹配。

4669 次浏览
import os, sys
os.isatty(sys.stdout.fileno())

或者

sys.stdout.isatty()