【发布时间】:2019-06-04 06:04:22
【问题描述】:
我使用select 从sys.stdin 进行非阻塞读取,它为我的套接字和用户输入交替处理程序:
while True:
input_ready, _, _ = select.select([my_socket, sys.stdin], [], [])
for sender in input_ready:
if sender == sys.stdin:
process_user_input()
elif sender == my_socket:
process_socket_reply()
在process_user_input() 我有:
command = input()
获取和处理用户输入。
我想显示一个提示,为我的用户提供类似终端的视图;就像在阻塞标准输入中使用 input('> ') 时我们可以实现的一样。
但是,如果我在我的process_user_input() 中使用input('> '),> 将在用户输入他的命令后打印(如预期的那样!)
some_command
> Invalid command.
我该怎么做?
注意:由于我的代码中发生了其他事件,stdout 中可能有一些打印(因此,print('> ', end='') 将失败)。所以我希望我的> 在我等待输入时出现,即使在终端打印了一些之后也是如此。
【问题讨论】:
标签: python python-3.x select stdin