开发者

Multiline progress bars

开发者 https://www.devze.com 2022-12-11 21:19 出处:网络
I know that to update something like a progress bar on the command line, one uses \'\\r\'.Is there any 开发者_运维知识库way to update multiple lines?If you\'re using Python try using blessings. It\'s

I know that to update something like a progress bar on the command line, one uses '\r'. Is there any 开发者_运维知识库way to update multiple lines?


If you're using Python try using blessings. It's a really intuitive wrapper around curses.

Simple example:

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

If you're actually trying to implement a progress bar, consider using progressbar. It will save you a lot of \r cruft.

You can actually connect blessings and progressbar together. Try running this:

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 bars


The best way is to use some existing library like ncurses. But you may try dirty workaround by clearing console with system call: system("cls");.


You can use VT100 codes to reposition the cursor on a higher line, then overdraw it with your updated status.


The Curses library offers powerful control for console UIs.

0

精彩评论

暂无评论...
验证码 换一张
取 消