使用编解码器读取stdin时的延迟

2024-09-29 19:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用下面的代码用编解码器简单地从stdin读取

import codecs

ins = codecs.getreader('utf-8')(sys.stdin, 'replace')
for l in ins:
    print l

我有另一个脚本,在小数据的突发中写入stdout。我需要我的脚本来处理每次突发后的数据。然而,编解码器似乎缓冲了数据。这意味着写入stdout的行不会立即出现在上面的读者代码中。有没有可以设置的参数来防止缓冲?在

谢谢!在


Tags: 数据代码inimport脚本for编解码器stdin
1条回答
网友
1楼 · 发布于 2024-09-29 19:24:59

在这个看似简单的例子中有两个缓冲级别。 为了避免第一个层次-更像是一个解决办法而不是一个解决方案-你可以阅读每一行然后解码,而不是反过来。它之所以有效,是因为行尾在utf-8中仍然是\n明确的。(第二个代码的缓冲区仍然没有!包括在内以供解释)

for l in sys.stdin:
    l = l.decode('utf-8', 'replace')
    print l

第二级来自for l in file。所以你实际上需要:

^{pr2}$

相关问题 更多 >

    热门问题