It's often useful for debugging to print something to stderr, and to route the error output to a file using '2>filename' on the command line.
However, when I try that with a python script, all prompt output from raw_input goes to stderr. Consider the following test program: === Start test.py === import sys def main(): print "Hello world" raw_input("Press ENTER") print "Goodbye world" if __name__ == "__main__": main() === End test.py === If I run it with the command line 'python2.5 test.py', I get the following output: Hello world Press ENTER <=== This appeared,the program paused, I press ENTER, and the program continued Goodbye world However, if I run it with the command line 'python2.5 test.py 2>/dev/ null' (I'm routing stderr output to /dev/null), I instead get: Hello world <=== No output appeared, the program paused, I press ENTER, and the program continued Goodbye world This indicates to me that the prompt output of raw_input is being sent to stderr. I did check the source code for raw_input, and it appears to be sending it to stdout as expected. I get this behavior on multiple OS platforms, with multiple versions of Python. I am building python on these platforms myself, but to my knowledge, I am not doing anything special which could account for this behavior. Any suggestions or pointers on how to get the expected behavior out of raw_input? -- http://mail.python.org/mailman/listinfo/python-list