我试图在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