我想以跨平台的方式以非阻塞的方式从stdin读取输入。
像这样的东西(这是非阻塞套接字的方式):
while True
try:
string = input("> ")
except BlockingIOError:
pass
else:
print(f"you typed {string}")
我不是在询问原始模式与熟食模式。熟化模式是行缓冲stdin的默认终端行为,原始模式在输入流时使输入流可以使用字符。
我想要的是一种独立于平台的stdin读取方式,如果没有要读取的数据则不会阻塞它。我再也不在乎必须按Enter才能使字符可用于流。当stdin中没有任何内容时,我只是不希望程序完全停止。
我也会对异步方法感到满意。或者像我上面的例子那样抛出BlockingIOError的东西。或者类似于Java的Scanner.hasNextLine(),它返回一个bool,表示stdin是否有要读取的数据。
我不想使用线程或子进程等重量级解决方案。