import sys, codecs, io
codecsout = codecs.getwriter('utf8')(sys.stdout)
ioout = io.open(sys.stdout.fileno(), mode='w', encoding='utf8')
print >> sys.stdout, 1
print >> codecsout, 2
print >> ioout, 3
失败原因:
^{pr2}$它也会因来自__future__
的print(3, file=ioout)
而失败。在
print
不知道如何与io
模块对话吗?在
print
语句在它打印的每个东西上隐式调用__str__
。sys.stdout
是一个字节流,所以发送一个str
就可以了。codecs.getwriter
是一个旧的Python API,所以我猜它只是像python2.x那样隐式地将str
转换成{io
模块在将str
转换为{因此,如果要将unicode数据发送到流,请使用
.write()
方法而不是print
:显然不是这样,即使你给它一个显式的Unicode字符串,它也不起作用。在
我猜问题出在自动附加到末尾的新行中。未来的打印功能似乎没有同样的问题:
^{pr2}$相关问题 更多 >
编程相关推荐