我正在尝试从标准输入执行单个字符的非阻塞读取。我找到了curses库的解决方案,但在尝试将输出写回stdout时我做错了。
import curses
from time import sleep
def callback(screen):
screen.nodelay(1)
return screen.getkey()
while 1:
try:
key = curses.wrapper(callback)
print "Got keypress: ", key
except:
sleep(3)
print "No Keypress"
print "Program\nOutput"
# Prints
No Keypress
Program
Output
除缩进输出外,一切都完美无瑕。有什么方法可以解决这个问题吗?
答案 0 :(得分:5)
看起来使用curses,'\ n'只是一个换页。您可能还需要输出回车符,或者显式使用curses来重新定位游标。
答案 1 :(得分:0)
在启动正确的curses
窗口的情况下,只有screen.addch('\n')
为我工作(在这种情况下,打印回车和换行);即使指定print
,我也无法让sys.stdout.write
(或更确切地说,\r\n
)“行为”。
答案 2 :(得分:0)
#!/usr/bin/python -tt
#youres to use
import curses
from time import sleep
def callback(screen):
screen.nodelay(1)
return screen.getkey()
def getkey():
try:
key = curses.wrapper(callback)
except:
key = None
return key
#tryer
while 1:
sleep(1)
k= getkey()
if k != None:
print "goo", k
else:
print "foo"