Have you tried:
sys.stdin.isatty()
sys.stdout.isatty()
Graham
Look at sys.executable to find the name of the binary for the Python
interpreter.
For a different problem, I have the following code. It might help:
def isrealfile(file):
"""
Test if file is on the os filesystem. This is necessary on windows,
when
starting python with pythonw.exe because in that case, the
stdout and stderr
are not real file and will create IOError when being flushed or when
more
than 4096 bytes are written.
"""
if not hasattr(file, 'fileno'): return False
try: tmp = os.dup(file.fileno())
except: return False
else: os.close(tmp); return True
class NullStream:
"""
A file like class that writes nothing
"""
def close(self): pass
def flush(self): pass
def write(self, str): pass
def writelines(self, sequence): pass
if not isrealfile(sys.stdout):
sys.stdout = NullStream()
if not isrealfile(sys.stderr):
sys.stderr = NullStream()
When running the executable built with py2exe you might be interested
in the variable sys.frozen; they are set to the string 'console' or 'windows', IIRC.
Thomas