En Wed, 23 Jan 2008 18:27:56 -0200, Mike Kent <[EMAIL PROTECTED]> escribió:
> 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: > [...] > 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. Surely you've seen that in bltinmodule.c, builtin_raw_input calls PyOS_Readline(PyFile_AsFile(fin), PyFile_AsFile(fout), prompt); where fin and fout are sys.stdin and sys.stdout respectively. That function is defined in Parser/myreadline.c, and eventually calls PyOS_StdioReadline with the same arguments. But PyOS_StdioReadline doesn't use its sys_stdout parameter to output the prompt; instead, it always uses stderr, no matter what arguments it receives. Looking at the svn history, PyOS_StdioReadline always has used stderr; got its current signature in rev 29400 (2002). Perhaps that behavior is based on the reverse of your use case, which may be more common. A script writes most of its output to stdout, and you capture that using >filename. If raw_input prompted the user using stdout, that would not be visible in this case, so using stderr is more useful. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list