Question

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?

Était-ce utile?

La solution

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top