Redirecting Python stdout ,stderr and stdin
nospam at nospam.yes
Mon Nov 24 11:14:32 CET 2003
On 24 Nov 2003 02:02:50 +0000, Alexander Schmolck <a.schmolck at gmx.net>
>"Serge Orlov" <sombDELETE at pobox.ru> writes:
>> "Alexander Schmolck" <a.schmolck at gmx.net> wrote in message news:yfssmke8vl0.fsf at black132.ex.ac.uk...
>> > Jan Knop <nospam at nospam.yes> writes:
>> > > Hello
>> > >
>> > > I am writing a Windows application where I need to redirect stdin,
>> > > stdout and stderr from Python. to my application
>> > > Is it a simple way of do it ?
>> > import sys
>> > sys.stdin, sys.stderr, sys.stdout = map(open, 'in.txt err.txt out.txt'.split(),
>> > 'r w w'.split())
>> That is why map should be deprecated asap ;)
>> sys.stdin = open("in.txt")
>> sys.stdout = open("out.txt","w")
>> sys.stderr = open("err.txt","w")
>The obfuscation in the above example was intended not to immediately overwhelm
>the OP (who expected having to use some winsock thingy) with simplicitly and
>clarity, but now you've spoilt it.
Actually that what I wat in the end is a method for subsclassing the
python stdio's into my application window. This means that Python runs
in background with all threes stdio streams redirected .
This is I believe somehow done in the Komodo program from
As far as I have found out You need to define a Input and output
class and imlement Read Readline , Write and WriteLine method in
Otherwise it will be necessary to somehow capture the Stdin stdout
streams from python console and redirect them .
More information about the Python-list