Python - how can I read stdin from shell, and send stdout to shell and file
Question: I'd like to have a Python script read stdin from the shell (bash), and send
stdout to shell as well a redirected file. I tried the following:

    
    
    $ cat test.py
    #!/usr/bin/python
    
    val = raw_input("enter val: ")
    print val
    
    $ ./test.py | tee out
    testing
    enter val: testing
    
    $ cat out
    enter val: testing
    

For some reason, the raw_input prompt is printed after I type my input, which
means I can't see the prompt as I type. With a bash script, I can get
something similar to work.

    
    
    $ cat test.sh
    #!/bin/bash
    
    echo "enter val: "
    read val
    echo $val
    
    $ ./test.sh | tee out
    enter val: testing
    testing
    
    $ cat out
    enter val: testing
    


Answer: 
    #!/usr/bin/python
    import sys
    
    print "enter val: ",
    sys.stdout.flush()
    val = raw_input()
    print val
    

Or

    
    
    #!/usr/bin/python
    import sys
    
    sys.stdout = sys.stderr
    val = raw_input("enter val: ")
    sys.stdout = sys.__stdout__
    print val
    

