Pergunta

Possible Duplicate:
Detect if stdin is a terminal or pipe in C/C++/Qt?

I want to know if the output of my program is directly going to a terminal or is being redirected to a pipeline or a file.

Because if it goes in the terminal i want to output the escape sequences to make color-text, but on a file or in a pipeline those would not be welcome.

I know it is possible because "ls" does it, anyone knows how?

Foi útil?

Solução

Use the os.isatty() function on the filedescriptor of the stdout stream or any other file you need to test:

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

For open files (like the sys.stdout stream) the .fileno() method returns the necessary descriptor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top