From: pruebauno on
On Dec 10, 10:06 am, prueba...(a)latinmail.com wrote:
> On Dec 10, 6:58 am, Bill McClain
>
>
>
> <20080915.20.wmccl...(a)spamgourmet.com> wrote:
> > On 2008-12-10, ajaksu <aja...(a)gmail.com> wrote:
>
> > > On Dec 9, 5:24 pm, Bill McClain <20080915.20.wmccl...(a)spamgourmet.com>
> > > wrote:
> > > > On 2008-12-09, MRAB <goo...(a)mrabarnett.plus.com> 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
> > i...(a)sattre-press.com        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?

OK I found StringIO it is called io.StringIO now.
From: Bill McClain on
On 2008-12-10, pruebauno(a)latinmail.com <pruebauno(a)latinmail.com> wrote:

> 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)

The example works, but unicode_literals causes problems elsewhere, in optparse
for example. I didn't look into it too closely. I'll probably give up trying
to anticipate 3.0 with 2.6 too closely.

-Bill
--
Sattre Press Tales of War
http://sattre-press.com/ by Lord Dunsany
info(a)sattre-press.com http://sattre-press.com/tow.html