Python 打印不适用于编解码器

标签 python unicode stdout codec

在我的控制台中从维基百科打印内容时,我一直遇到 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 在程序执行时没有刷新,它将在程序终止时自动刷新,如问题中所述。

关于Python 打印不适用于编解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51341279/

相关文章:

python - 如何在 Google 应用引擎上使用 gcloud?

python - 在Python中将数据框从水平 reshape 为垂直

.net - 如何规范化字符串?

go - 在 golang 中准备好后从 stdout 管道读取

python - 编写一个 pytest 函数来检查控制台上的输出(stdout)

python - 多处理 python 的行为不符合预期

python - 重写类方法以检查是否为空

python - 如何使用 Python 将文件格式从 Unicode 转换为 ASCII?

PHP json_decode 函数只能处理 UTF-8 编码的字符串吗?

python-3.x - numba jitted函数内的冲洗标准输出