Итак, у меня есть скрипт, который будет непрерывно считывать данные с датчика, печатать возврат каретки, а затем значение датчика. Это происходит до тех пор, пока raw_input()
не завершит блокировку (нажата клавиша ввода).
Однако, когда я запускаю его, вместо увеличения числа я вижу пустое место. Когда я нажимаю ввод, печатается одно число, а затем программа закрывается. Если \r
заменить на \n
, программа запустится как надо, распечатав значение «датчика» (i = i + 1
— это заполнитель для показания датчика), но вместо того, чтобы повторно использовать ту же строку, она распечатает его на новой строке. Почему не работает с \r
? Вот полный код:
from threading import Thread
from time import sleep
import sys
running = True
def loop():
i = 0
while running:
sys.stdout.write("\r" + str(i))
i = i+1
sleep(0.1)
thread = Thread(target=loop)
thread.start()
raw_input()
running = False
thread.join()
\r
, он печатает последовательные строки, а используя\n
, он печатает новую строку, как и должно быть. Какой результат вы ожидаете увидеть? - person Padraic Cunningham   schedule 23.07.2014\r
на моем, ничего не показывает мне, пока я не нажму Enter, затем я вижу одну строку и наши закрытия. Я должен увидеть в начале одну строку, которая переписывается и увеличивается, и останавливается, когда я нажимаю ввод. - person Luke Moll   schedule 23.07.2014\r
, я вижу1True
и т. д. Я не думаю, что вам нужно глобальное ключевое слово. - person Padraic Cunningham   schedule 23.07.20140...
, затем новая строка для\n
вывод находится в одной строке для\r
- person Padraic Cunningham   schedule 23.07.2014print running
. - person Luke Moll   schedule 23.07.2014\r
находится в одной строке. - person Padraic Cunningham   schedule 23.07.2014\n
, который, как я знаю, работает, вывод\r
перезаписывает ту же строку или добавляет ее? - person Luke Moll   schedule 23.07.2014