Why can't I set sys.ps1 to a unicode string?
RG
rNOSPAMon at flownet.com
Thu Aug 12 02:50:13 EDT 2010
More precisely, why does sys.ps1 not appear if I set it to a unicode
string? This problem is hard for me to describe here because my
newsreader is not properly unicode enabled, but here's the gist of it:
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
First, let's make sure our encodings are set properly:
>>> import sys
>>> sys.stdin.encoding
'utf-8'
>>> sys.stdout.encoding
'utf-8'
Looks good. Now, let's make two unicode strings, identical except for
one character:
>>> s1 = u'%%% %%% '
>>> s2 = u'%%% ' + u'\u262f' + '%%% '
>>> print s1
%%% %%%
>>> print s2
%%% /&%%%
If this were a properly unicode-enabled newsreader you would see a
yin-yang symbol in the middle of s2.
Now the weird part:
>>> sys.ps1 = s1
%%% %%% sys.ps1 = s2 # This is as expected
print s1 # But this isn't. There's no prompt!
%%% %%% # Everything still works
print s2
%%% /&%%%
sys.ps1 = s1 # If we reset sys.ps1 we get our prompt back
%%% %%% sys.ps1 = '>>> '
>>> sys.ps1 = u'>>> '
>>>
So... why does having a non-ascii character in sys.ps1 make the prompt
vanish?
(If you're wondering why I care, I want to connect to an interactive
python interpreter from another program, and I want a non-ascii
delimiter to unambiguously mark the end of the interpreter's output on
every interaction.)
Thanks,
rg
More information about the Python-list
mailing list