According to the manual, raw_input writes to stdout. I have this little program (test_raw_input.py):
# Test if rawinput writes to stdout or stderr
raw_input('This is my prompt > ')
And no matter how I run this:
$ python test_raw_input.py > xxx
or
$ python test_raw_input.py 2> xxx
The prompt always ends up in xxx. Why is this happening?
1 Answer 1
From your response to KennyTM I gather you understand
python test_raw_input.py > xxx
and it's only the second usage that you don't understand:
python test_raw_input.py 2> xxx
I think you are running into the behavior described here http://mail.python.org/pipermail/python-dev/2008-January/076446.html, which resulted in bug report http://bugs.python.org/issue1927, which has a comment saying it wasn't fixed yet last september.
However, there is a workaround: from https://groups.google.com/forum/?fromgroups=#!topic/chennaipy/R_VJYNdel-o, if you
import readline
before using raw_input, the behavior will be as you expect.
python test_raw_input.py > xxx 2> yyy.>is stdout,2>is stderr. The manual says raw_input writes to stdout, so only the first version should put the prompt inxxx. The second version, using2>, should show the prompt in the terminal, since stdout is not redirected toxxx. But this is not the case: even when only redirecting stderr, the prompt is put intoxxx. Why?