"Steven D'Aprano" <st...@pearwood.info> wrote in message news:53ce0b96$0$29897$c3e8da3$54964...@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 - >> >> C:\>python >> 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 >> '\u2119' > > > What makes you think it uses stderr? To the best of my knowledge, it uses > stdout. >
This is from the docs on sys.stdxxx sys.stdin sys.stdout sys.stderr 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 > It fails. 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 worked. Frank -- https://mail.python.org/mailman/listinfo/python-list