Очистить линию при печати в Python 3 - PullRequest
2 голосов
/ 07 ноября 2019

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

Я просмотрел некоторые сайты (в основном, этот) иЯ не могу найти ответ, я использую https://trinket.io в качестве моего кодера, у меня также есть Python от https://python.org, Можете ли вы найти код, который работает?

Вот код, который у меня такдалеко:

import functools

printf = functools.partial(print, end="")

loading():
    printf("loading")
    printf(".")
    time.sleep(.3)
    printf(".")
    time.sleep(.3)
    printf(".")
    time.sleep(.3)
    printf(".")
    time.sleep(.3)
    printf(".")

Что дает мне этот вывод (финальная стадия):

loading.....

Я хочуудалить строку выше, чтобы я мог использовать последовательность загрузки несколько раз.

1 Ответ

0 голосов
/ 07 ноября 2019

Я полагаю, что эти корректировки получат то, что вы хотите:

import functools
import time

printf = functools.partial(print, end="", flush=True)

def loading():
    printf("\r{:12}\r".format(''))
    printf("loading")
    printf(".")
    time.sleep(.3)
    printf(".")
    time.sleep(.3)
    printf(".")
    time.sleep(.3)
    printf(".")
    time.sleep(.3)
    printf(".")

loading()
time.sleep(2)
loading()

Два изменения:

  1. Установка flush=True при печати гарантирует, что каждая точка печатается между операторами сна,в противном случае все они будут отображаться одновременно.
  2. printf("\r{:12}\r".format('')) очищает строку. '\r' - возврат каретки, перемещение курсора в начало, затем он печатает пробелы, чтобы «очистить» (перезаписать) загружаемый текст (который составляет 12 символов), а затем снова возвращает каретку, чтобы напечатать новое загрузочное сообщение.
...