python - 使用编解码器读取标准输入时出现延迟

标签 python stdin codec

我试图使用下面的代码简单地使用编解码器从标准输入读取

import codecs

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

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

谢谢!

最佳答案

在这个看似简单的示例中,有两个级别的缓冲。 为了避免第一级(更多的是作为一种解决方法而不是解决方案),您可以读取每一行然后对其进行解码,而不是相反。它之所以有效,是因为在 utf-8 中行尾仍然是明确的\n。 (注意:第一段代码不起作用,因为它仍然具有第二级缓冲!包含它是为了解释目的)

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

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

while True:
    l = sys.stdin.readline()
    if not l: break
    l = l.decode('utf-8', 'replace')
    print l

关于python - 使用编解码器读取标准输入时出现延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172216/

相关文章:

c - 如何检索字符串的一部分?

codec - Speex 编解码器是否适用于移动 VOIP 应用程序?

python - 在 Mac 上生成等效的 python "jar"以在 Windows 上运行

python - 发送没有内容长度或其他 header 的 http 请求

python - 此代码是否正确识别 python 字符串

c - 重定向标准输入

C - 使用文件从标准输入读取?

c# - 使用UWP以AMR-NB编码捕获音频?

audio - 适用于iPhone的OPUS音频编解码器编码

python - 查找存储在数据框单元格中的列表