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