2009-11-13 3 views

ответ

4

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

+0

Is ("ЦБС") для Windows-только? – yodie

+0

В Linux есть «ясный» – doc

+1

Что относительно OS X? – yodie

2

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

1

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

3

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

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

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") 

Если вы на самом деле пытается реализовать прогресс бар, рассмотреть возможность использования progressbar. Это сэкономит вам немало \r cruft.

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

систему
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

Смежные вопросы