Unicode, stdout, and stderr
frank at chagford.com
Tue Jul 22 09:15:39 CEST 2014
"Steven D'Aprano" <steve at pearwood.info> wrote in message
news:53ce0b96$0$29897$c3e8da3$5496439d at news.astraweb.com...
> On Tue, 22 Jul 2014 08:18:08 +0200, Frank Millman wrote:
>> Hi all
>> This is not important, but I would appreciate it if someone could
>> explain the following, run from cmd.exe on Windows Server 2003 -
>> Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32
>> bit (In
>> tel)] on win32
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> x = '\u2119'
>>>>> x # this uses stderr
> What makes you think it uses stderr? To the best of my knowledge, it uses
This is from the docs on sys.stdxxx
File objects used by the interpreter for standard input, output and errors:
- stdin is used for all interactive input (including calls to input());
- stdout is used for the output of print() and expression statements and
for the prompts of input();
- The interpreter's own prompts and its error messages go to stderr.
>> It seems that there is a difference between writing to stdout and
>> writing to stderr.
> I would be surprised if that were the case, but I don't have a Windows
> box to test it. Try this:
> import sys
> print(x, file=sys.stderr) # I expect this will fail
It does not fail.
> print(repr(x), file=sys.stdout) # I expect this will succeed
The clue that led me to stderr is that the logging module displays unicode
strings to the console without a problem. I delved into the source code, and
found that it writes to stderr. When I changed mine to stderr, it also
More information about the Python-list