¿Cómo detecto si sys.stdout está conectado al terminal o no? [duplicar

Esta pregunta ya tiene una respuesta aquí:

¿Cómo reconocer si un script se está ejecutando en un tty? 1 respuesta

¿Hay alguna manera de detectar sisys.stdout está conectado a un terminal de consola o no? Por ejemplo, quiero poder detectar si foo.py se ejecuta a través de:

$ python foo.py  # user types this on console

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

La razón por la que hago esta pregunta es porque quiero asegurarme de que la visualización de mi barra de progreso solo ocurra en el caso anterior (consola real).

Respuestas a la pregunta(1)

Su respuesta a la pregunta