我需要使用非阻塞方式从控制台读取。我成功地使用select
设法完成了这项工作ready = select.select(read_list, [], [], timeout)[0]
read_list = [sys.stdin]
timeout = 0.1 # seconds
我现在的问题是我需要在输入之前提供一个文本行(例如UI),并希望输入光标位于同一行。之前当我不使用时选择I可以通过以下方式实现这一目标:
buff = raw_input(' ENTER CODE: ------\b\b\b\b\b\b')
这样光标就在逗号之后(例如,在第一个' - '上)
现在我需要使用 stdin ,光标始终位于新行的开头。即使我这样做:
print(' ENTER CODE: ------\b\b\b\b\b\b\r')
while read_list:
ready = select.select(read_list, [], [], timeout)[0]
if not ready:
idle_work()
else:
for file in ready:
line = file.readline()
if not line: # EOF, remove file from input list
read_list.remove(file)
elif line.rstrip(): # optional: skipping empty lines
#treat_input(line)
buff =line.upper()
ETC...
有什么想法吗?
答案 0 :(得分:2)
我解决了这个问题,在print语句的末尾追加了一个'然后刷新std:
print(' ENTER CODE: ------\b\b\b\b\b\b'),
sys.stdout.flush()