python 使用ANSI控制符实现多行进度条“\ 033 [r; cH”参考:https://www.student.cs.uwaterloo.ca/~cs452/terminal.html缺点:运

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 使用ANSI控制符实现多行进度条“\ 033 [r; cH”参考:https://www.student.cs.uwaterloo.ca/~cs452/terminal.html缺点:运相关的知识,希望对你有一定的参考价值。

from __future__ import print_function

import random
import time
import sys

if not sys.stdout.isatty() or sys.version_info[0] == 2:
    sys.exit(2)


class PrograssBar():
    index = [0] * 100

    def __init__(self):
        self._set_index()
        self.status = 0
        self.done = False

    def _set_index(self):
        for index, i in enumerate(PrograssBar.index):
            if i == 0:
                self.index = index + 2
                PrograssBar.index[index] = 1
                break

    def write(self, precent):
        print(
            "\033[{index};1H{:<100}{precent:3}% identifier:{identifier:3}".format('=' * precent, index=self.index,
                                                                                  precent=precent,
                                                                                  identifier=self.index - 1))

    def update(self, precent):
        self.status += precent
        self.status = min(100, self.status)
        self.write(self.status)
        if self.status == 100:
            self.done = True


target = [PrograssBar() for i in range(10)]

while 1:
    process = random.choice(target)
    if process.done:
        continue
    process.update(random.randint(1, 5))
    if process.done and all(map(lambda x: x.done, target)):
        print('\033[{};1H'.format(len(target) + 2), end='')
        break
    time.sleep(0.05)

以上是关于python 使用ANSI控制符实现多行进度条“\ 033 [r; cH”参考:https://www.student.cs.uwaterloo.ca/~cs452/terminal.html缺点:运的主要内容,如果未能解决你的问题,请参考以下文章

python实现一个控制台下的进度条

Linux终端彩色打印+终端进度条

OpenCV+python实现摄像头简单手势识别--进度条控制亮度

python实现进度条

Python实用工具用Python在控制台输出进度条

Python文本进度条