Python打印不使用编解码器

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (72)

在我的控制台中从维基百科打印东西时,我一直遇到unicode错误。我找到了一个解决方案(当试图使用像Ł这样的奇怪字符时,这并没有让我的控制台崩溃)并且解决方案是把它放在我的主文件的顶部:

sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)

事情是现在我的控制台不打印任何东西。只有当我从中途运行中取消代码时,它才会显示我正在打印的内容。它用于实时更新(在我将上面的代码片段放入之前),因为它从维基百科中提取信息。任何人都可以解释如何解决这个或替代解决方案。

澄清:我将收到的错误没有上面的代码片段是:

UnicodeEncodeError: 'charmap' codec can't encode character '\u0141' in position 6: character maps to <undefined>

现在使用代码片段,它不会实时打印任何内容,但它可以防止该错误。当程序最终完成时,它会立即打印所有内容 - 但我希望它能够按原样打印(就像之前一样)。我使用的是Python 3.6.5

提问于
用户回答回答于

sys.stdout是一个缓冲流,也就是说,输出存储在流中,直到刷新缓冲区才输出。

print函数将自动刷新其输出流,但如果您直接写入流(例如sys.stdout.write('foo')),则需要flush()显式调用它以将输出发送到控制台。

如果sys.stdout在程序执行时未刷新,则程序终止时将自动刷新,如问题中所述。

扫码关注云+社区

领取腾讯云代金券