2024-09-29 19:24:59 发布
网友
我试着用下面的代码用编解码器简单地从stdin读取
import codecs ins = codecs.getreader('utf-8')(sys.stdin, 'replace') for l in ins: print l
我有另一个脚本,在小数据的突发中写入stdout。我需要我的脚本来处理每次突发后的数据。然而,编解码器似乎缓冲了数据。这意味着写入stdout的行不会立即出现在上面的读者代码中。有没有可以设置的参数来防止缓冲?在
谢谢!在
在这个看似简单的例子中有两个缓冲级别。 为了避免第一个层次-更像是一个解决办法而不是一个解决方案-你可以阅读每一行然后解码,而不是反过来。它之所以有效,是因为行尾在utf-8中仍然是\n明确的。(第二个代码的缓冲区仍然没有!包括在内以供解释)
for l in sys.stdin: l = l.decode('utf-8', 'replace') print l
第二级来自for l in file。所以你实际上需要:
for l in file
在这个看似简单的例子中有两个缓冲级别。 为了避免第一个层次-更像是一个解决办法而不是一个解决方案-你可以阅读每一行然后解码,而不是反过来。它之所以有效,是因为行尾在utf-8中仍然是\n明确的。(第二个代码的缓冲区仍然没有!包括在内以供解释)
第二级来自
^{pr2}$for l in file
。所以你实际上需要:相关问题 更多 >
编程相关推荐