在使用线程和Termios时,我有一个非常奇怪的print()错误。我有一个重复线程在打印一些东西时通过Termios捕捉到一个键。但它总是打印新行,它不是从行的开头开始,而是从最后一行结束的地方开始
这是我的代码:
def func1():
while True:
try:
var = int(inputChar())
except ValueError:
var = 0
Thread(target=func1).start()
while True:
print("stuff")
time.sleep(2)
这是我的inputChar()函数:
import sys, tty, termios
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
这是预期的产出:
stuff
stuff
stuff
stuff
stuff
这是输出:
stuff
stuff
stuff
stuff
stuff
我不知道为什么会发生这种情况,但您可以通过将print命令替换为
或
末尾的\r称为盒式磁带返回。当sys.stdout.write()不是一个可行的选项时,它非常有用
相关问题 更多 >
编程相关推荐