在控制台中打印维基百科中的内容时,我总是遇到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
发布于 2018-07-15 01:14:38
sys.stdout
是一个缓冲流,也就是说,输出存储在流中,直到刷新缓冲区后才输出。
print
函数将自动刷新其输出流,但如果直接写入流(例如,sys.stdout.write('foo')
),则需要显式调用其flush()
以将输出发送到控制台。
如果程序在执行时未刷新sys.stdout
,则会在程序终止时自动刷新它,如问题中所述。
https://stackoverflow.com/questions/51341279
复制相似问题