Suppress output to stdout/stderr in InteractiveInterpreter

Robert Kern robert.kern at gmail.com
Fri Apr 16 17:16:23 CEST 2010


On 2010-04-16 00:42 AM, Dave W. wrote:
>>> Think I'll start a new post with the subject: "Globally override
>>> built-in print function?"
>
>> Don't bother. Replacing sys.stdout is the right thing to do. It
>> won't interfere with the C++ streams...
> -snip-
>
> I'm not so certain. Won't the C++ host app share the same
> stdin/stdout/stderr file descriptors with the embedded Python
> interpreter?  So there's at least the *potential* for a background
> C++ thread dedicated to processing Python commands (which redirect
> stdout) to interfere with, say, the main thread's log statements to
> stdout.  Seems like I could wind up with log statements in my
> interpreter results.

No. Changing the object that the name sys.stdout refers to does not swap out the 
underlying file descriptors.

> Anyway, that's why I've got this mild obsession with finding a way
> to capture output from the interpreter *without* redirecting
> stdout...

Not possible. Many things write directly to sys.stdout/sys.stderr.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-list mailing list