python 3中的非阻塞输入

时间:2017-04-18 02:55:05

标签: python-3.x input stdin nonblocking

我想以跨平台的方式以非阻塞的方式从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是否有要读取的数据。

我不想使用线程或子进程等重量级解决方案。

0 个答案:

没有答案