Redirecting Python stdout ,stderr and stdin

Discussion in 'Python' started by Jan Knop, Nov 23, 2003.

  1. Jan Knop

    Jan Knop Guest

    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 ?
    Has anyone done it using Winsock ?
     
    Jan Knop, Nov 23, 2003
    #1
    1. Advertisements

  2. import sys
    sys.stdin, sys.stderr, sys.stdout = map(open, 'in.txt err.txt out.txt'.split(),
    'r w w'.split())
    'as
     
    Alexander Schmolck, Nov 24, 2003
    #2
    1. Advertisements

  3. Jan Knop

    Serge Orlov Guest

    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")

    -- Serge
     
    Serge Orlov, Nov 24, 2003
    #3
  4. 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.


    'as
     
    Alexander Schmolck, Nov 24, 2003
    #4
  5. Jan Knop

    Jan knob Guest

    Hi

    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
    ActiveState
    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
    these classes.
    Otherwise it will be necessary to somehow capture the Stdin stdout
    streams from python console and redirect them .

    with regards
    Jan
     
    Jan knob, Nov 24, 2003
    #5
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.