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

118

This question already has an answer here:

How to recognize whether a script is running on a tty? 1 answer

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

$ python foo.py  # user types this on console

ИЛИ ЖЕ

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

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

Ваш Ответ

1   ответ
185
if sys.stdout.isatty():
    # You're running in a real terminal
else:
    # You're being piped or redirected
Маленькая вещь, но почему бы не использоватьcat вместо?
Чтобы продемонстрировать в своей оболочке, сравнитеpython -c "import sys; print(sys.stdout.isatty())" (следует написатьTrue) сpython -c "import sys; print(sys.stdout.isatty())" | grep . (следует написатьFalse).

Похожие вопросы