我知道要在命令行上更新类似进度条的内容,请使用'\ r'。有没有办法更新多行?
答案 0 :(得分:5)
如果您正在使用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
残缺。
您实际上可以将祝福和进度条连接在一起。试试这个:
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()
答案 1 :(得分:4)
最好的方法是使用像ncurses这样的现有库。但是,您可以通过系统调用清除控制台来尝试脏解决方法:system("cls");
。
答案 2 :(得分:2)
您可以使用VT100 codes将光标重新定位在更高的行上,然后使用更新后的状态对其进行透支。
答案 3 :(得分:1)
Curses库为控制台用户界面提供了强大的控制功能。