如何将'io.StringIO'与'print >>'一起使用?

use*_*739 3 python stringio python-2.7

我收到以下错误:

 Second line.
Traceback (most recent call last):
  File "./main.py", line 8, in <module>
    print >>output, u'Second line.'
TypeError: unicode argument expected, got 'str'
Run Code Online (Sandbox Code Playgroud)

当我运行以下代码时。我不知道怎么了 有人可以教我如何解决它吗?

#!/usr/bin/env python
# vim: set noexpandtab tabstop=2 shiftwidth=2 softtabstop=-1 fileencoding=utf-8:

import io
output = io.StringIO()
output.write(u'First line.\n')
print u'Second line.'
print >>output, u'Second line.'
contents = output.getvalue()
print contents
output.close()
Run Code Online (Sandbox Code Playgroud)

Ste*_*uch 5

对于Python 2,请考虑使用StringIO模块而不是io。

码:

from StringIO import StringIO
Run Code Online (Sandbox Code Playgroud)

测试代码:

from StringIO import StringIO
output = StringIO()
output.write(u'First line.\n')
print u'Second line.'
print >>output, u'Second line.'
contents = output.getvalue()
print contents
output.close()
Run Code Online (Sandbox Code Playgroud)

结果:

from StringIO import StringIO
Run Code Online (Sandbox Code Playgroud)

  • io是可用的,但是它是Python 3的后端口。显然,打印重定向使它感到困惑。您仅使用Python2功能,因此StringIO模块可以很好地使用。 (2认同)