Python 3.8.0 Странная ошибка печати

У меня очень странная ошибка print () при использовании Threads и Termios. У меня есть повторяющаяся тема, ловящая ключ через 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

Всего 1 ответ


Я понятия не имею, почему это происходит, но вы можете это исправить, заменив команду печати на

print("stuff
")

или

sys.stdout.write("stuff

")

r в конце называется возвратом картриджа. Это полезно, когда sys.stdout.write () не является жизнеспособным вариантом


Есть идеи?

10000