soweit ich die Doku richtig verstanden habe, ist 'sys.stdout' seit Python 3 ein Exemplar von 'io.TextIOBase'. Eine Konsequenz daraus ist, dass mit 'write()' übergebener Text gebuffered wird um die ebenfalls neue Möglichkeit des 'on-the-fly'-en-/decodings zu beschleunigen.
Das wiederum hat zur Folge, dass eben dieser Text im buffer und nicht auf dem Bildschirm landet.
Darum geht es mir konkret:
Code: Alles auswählen
def input_():
old_term_settings = termios.tcgetattr(sys.stdin)
tty.setraw(sys.stdin)
try:
while True:
ch = sys.stdin.read(1)
if ch == 'q':
break
sys.stdout.write(ch)
sys.stdout.flush() #Needed under Python 3 above
finally:
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_term_settings)mutetella
