On Dec 10, 6:58 am, Bill McClain
<[EMAIL PROTECTED]> wrote:
> On 2008-12-10, ajaksu <[EMAIL PROTECTED]> wrote:
>
> > On Dec 9, 5:24 pm, Bill McClain <[EMAIL PROTECTED]>
> > wrote:
> > > On 2008-12-09, MRAB <[EMAIL PROTECTED]> wrote:
>
> > > > In Python 2.x unmarked string literals are bytestrings. In Python 3.x
> > > > they're Unicode. The intention is to make the transition from 2.x to 3.x
> > > > easier by adding some features of 3.x to 2.x, but without breaking
> > > > backwards compatibility (not entirely successfully!).
>
> > > It is a bit ugly. In 2.6 StringIO won't take bytestrings, so I apply 
> > > u'x'. But
> > > in 3.0 u'x' will be gone and I'll have to change the code again.
> > Try:
> > from __future__ import unicode_literals
>
> That works for:
>
>     output.write('First line.\n')
>
> ...but not for:
>
>    print('Second line.', file=output)
>
> Maybe a combination of this and functools.partial as was suggested before. At
> least the necessary edits would be at the top of the program.
>
> -Bill
> --
> Sattre Press                                      Tales of 
> Warhttp://sattre-press.com/                      by Lord Dunsany
> [EMAIL PROTECTED]        http://sattre-press.com/tow.html

I think this combination might do the trick (I don't have 2.6 to test
it right now):

from __future__ import print_function
from __future__ import unicode_literals
from functools import partial
import io
print = partial(print, sep=" ", end="\n")
out = io.StringIO()
print("hello", file=out)

What puzzles me is the documentation in 2.6 and 3.0:
In 2.6 it says: "The StringIO object can accept either Unicode or 8-
bit strings". Why does it fail with old str objects then?
Why is there no documentation for StringIO in 3.0?
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to