Как распознать, работает ли скрипт на tty?


Я хотел бы, чтобы мой скрипт действовал по-другому в сеансе интерактивной оболочки и при запуске с перенаправленным stdout (например, при передаче в другую команду).

Как я узнаю, какие из этих двух происходят в скрипте Python?

пример такого поведения в существующей программе: grep -- color=auto highlights соответствует при запуске в интерактивной оболочке, но не при передаче на что-то другое.

1 53

1 ответ:

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

или

sys.stdout.isatty()