Как определить, подключен ли sys.stdout к терминалу или нет? [Дубликат]

На этот вопрос уже есть ответ:

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

Есть ли способ определить, является лиsys.stdout подключен к консольному терминалу или нет? Например, я хочу иметь возможность определить, запускается ли foo.py через:

$ python foo.py  # user types this on console

ИЛ

$ python foo.py > output.txt # redirection
$ python foo.py | grep ....  # pipe

Причина, по которой я задаю этот вопрос, заключается в том, что я хочу убедиться, что мой индикатор выполнения отображается только в первом случае (настоящая консоль).

Ответы на вопрос(1)

Решение Вопроса
if sys.stdout.isatty():
    # You're running in a real terminal
else:
    # You're being piped or redirected
 Azsgy01 июн. 2018 г., 03:54
Маленькая вещь, но почему бы не использоватьcat вместо этого?
 A-B-B28 окт. 2013 г., 20:17
Чтобы продемонстрировать в своей оболочке, сравнитеpython -c "import sys; print(sys.stdout.isatty())" (должен написатьTrue) сpython -c "import sys; print(sys.stdout.isatty())" | grep . (должен написатьFalse).

Ваш ответ на вопрос