Многострочные индикаторы выполнения - PullRequest
6 голосов
/ 13 ноября 2009

Я знаю, что для обновления чего-то вроде индикатора выполнения в командной строке нужно использовать '\ r'. Есть ли способ обновить несколько строк?

Ответы [ 4 ]

5 голосов
/ 18 апреля 2013

Если вы используете Python, попробуйте использовать благословение . Это действительно интуитивно понятная оболочка для проклятий.

Простой пример:

from blessings import Terminal

term = Terminal()

with term.location(0, 10):
    print("Text on line 10")
with term.location(0, 11):
    print("Text on line 11")

Если вы на самом деле пытаетесь реализовать индикатор выполнения, подумайте об использовании прогрессбар . Это спасет вас от многих \r бесполезных.

На самом деле вы можете соединить благословения и индикатор прогресса. Попробуйте запустить это:

import time

from blessings import Terminal
from progressbar import ProgressBar

term = Terminal()

class Writer(object):
    """Create an object with a write method that writes to a
    specific place on the screen, defined at instantiation.

    This is the glue between blessings and progressbar.
    """
    def __init__(self, location):
        """
        Input: location - tuple of ints (x, y), the position
                        of the bar in the terminal
        """
        self.location = location

    def write(self, string):
        with term.location(*self.location):
            print(string)


writer1 = Writer((0, 10))
writer2 = Writer((0, 20))

pbar1 = ProgressBar(fd=writer1)
pbar2 = ProgressBar(fd=writer2)

pbar1.start()
pbar2.start()

for i in range(100):
    pbar1.update(i)
    pbar2.update(i)
    time.sleep(0.02)

pbar1.finish()
pbar2.finish()

multiline-progress

4 голосов
/ 13 ноября 2009

Лучший способ - использовать некоторые существующие библиотеки, такие как ncurses. Но вы можете попробовать грязный обходной путь, очистив консоль системным вызовом: system("cls");.

2 голосов
/ 13 ноября 2009

Вы можете использовать коды VT100 , чтобы переместить курсор на более высокую строку, а затем переопределить его с вашим обновленным статусом.

1 голос
/ 13 ноября 2009

Библиотека Curses предлагает мощный контроль для консольных интерфейсов.

...