Загрузка знаков Python, перезапись консоли - PullRequest
0 голосов
/ 17 ноября 2018

Итак, у меня есть этот код, и я понятия не имею, как запустить его в одну строку, просто перезаписав предыдущий вывод, если вы понимаете, что я имею в виду. Вот код:

import time

signs = ["|", "/", "-", "\\"]
while True:
    for i in range(4):
         print("\r" + signs[i].format(i))
         time.sleep(1)

Я был бы очень рад, если бы вы могли мне помочь

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Это сделает это:

from __future__ import print_function # only needed for python 2.x
import time, sys

signs = ["|", "/", "-", "\\"]
while True:
    for i in range(4):
         print("\r" + signs[i].format(i), end="", flush=True)
         #print("\r" + signs[i].format(i), end="") # use this instead of above in python 2.x
         #sys.stdout.flush() # only needed for python 2.x
         time.sleep(1)
0 голосов
/ 17 ноября 2018

Вы должны добавить end='\r' к своему выражению печати, так что это небольшое изменение должно сделать работу, как вы хотели:

import time

signs = ["|", "/", "-", "\\"]
while True:
    for i in range(4):
         print(signs[i].format(i), end='\r')
         time.sleep(1)

По умолчанию это \n, поэтому следующий символ строки, но с\r ( возврат каретки ) текущая строка будет перезаписана при следующем выводе.
Это может вызвать проблемы, хотя, если предыдущий вывод длиннее последующего, то он перезаписывает только столько символов, сколько имеет новый вывод, остальные остаются.В таких случаях это может помочь добавить несколько пробелов в конце вывода, чтобы заполнить разницу в длине последовательности.
Обычно поведение зависит от используемых выходных данных , т. Е. Shell, Idle, запись в файл, Eclipse, PyCharm и т. Д. Некоторые выходные оболочки могут не поддерживать эту команду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...