选择和读取stdin在第一次输入时只返回一个字符,但在第二次输入时返回更多

时间:2018-05-15 14:25:19

标签: python python-3.x

我试图在Python 3中读取stdin。我的代码按预期工作,但在第一次读取时,我得到的数据少于预期:当我启动脚本并键入" Test" (=按键),我只得到了' T'。当我再次按下时,我得到了\ n \ n&n 39。

我希望阅读'测试\ n'在第一个和' \ n'在第二个。

如果我第二次发送测试,我会得到相同的行为。

脚本:

import sys
import select


def read(size=0):
    '''
    read data from stdin, may return less the size

    :param size: max size to read, on 0 or None read as much as available
    '''
    data = bytearray()
    while size == 0 or size < len(data):
        rlist, dummy, dummy = select.select([sys.stdin], [], [], 0.1)
        if rlist:
            data = data + sys.stdin.buffer.read(1)
        else:
            return data


if __name__ == '__main__':
    while(1):
        data = read()
        if data:
            print("data returned from read:", data)

此在线示例也显示了此行为:https://repl.it/repls/EnragedMaturePlanes

0 个答案:

没有答案