0
点赞
收藏
分享

微信扫一扫

Linux从0到1实现一个进度条小程序

在Linux中,可以使用ncurses库来实现一个进度条小程序。ncurses库是一个用于终端显示的开源库,它提供了一组函数来控制终端的输出和输入。

下面我们将实现一个简单的进度条小程序。

  1. 准备工作

首先需要安装ncurses库。在Debian/Ubuntu系统下,可以使用以下命令安装:

$ sudo apt-get install libncurses5-dev libncursesw5-dev

  1. 编写程序

接下来,我们将编写一个使用ncurses库实现进度条的程序。程序实现基本思路如下:

  1. 使用initscr函数初始化终端
  2. 使用cbreak函数开启行缓冲模式
  3. 使用noecho函数关闭回显模式
  4. 使用start_color函数初始化颜色
  5. 使用init_pair函数设置颜色对
  6. 使用attron函数开启属性
  7. 使用mvprintw函数在屏幕上输出进度条
  8. 使用refresh函数刷新屏幕
  9. 使用getch函数等待用户按下任意键结束程序
  10. 使用endwin函数关闭终端

下面是程序的代码实现:

#include <ncurses.h>
#include <unistd.h>

int main()
{
    // 初始化终端
    initscr();

    // 开启行缓冲模式
    cbreak();

    // 关闭回显模式
    noecho();

    // 初始化颜色
    start_color();

    // 设置颜色对
    init_pair(1, COLOR_GREEN, COLOR_BLACK);
    init_pair(2, COLOR_RED, COLOR_BLACK);

    // 开启属性
    attron(COLOR_PAIR(1));

    // 输出进度条
    for (int i = 0; i <= 100; i++)
    {
        move(10, 0);
        printw("[");
        for (int j = 0; j <= i / 2; j++)
        {
            if (i >= 60)
                attron(COLOR_PAIR(2));
            printw("=");
        }
        attron(COLOR_PAIR(1));
        for (int k = i / 2 + 1; k <= 50; k++)
            printw(" ");
        printw("] %d%%", i);

        refresh();
        usleep(10000);
    }

    // 等待用户按下任意键结束程序
    getch();

    // 关闭终端
    endwin();

    return 0;
}

  1. 编译运行程序

将程序保存为progressbar.cpp,并使用以下命令编译:

$ g++ -o progressbar progressbar.cpp -lncurses

编译成功后,使用以下命令运行程序:

$ ./progressbar

运行程序后,可以看到一个进度条在屏幕上不停地闪动,直到用户按下任意键结束程序。

完整代码:

import time
import sys

def progress_bar(progress, total, symbol='█'):
    percent = progress / total
    progress_str = symbol * int(50 * percent)
    percent_str = '{:.0%}'.format(percent)
    sys.stdout.write('\r[%-50s] %s' % (progress_str, percent_str))
    sys.stdout.flush()

if __name__ == '__main__':
    total = 100
    for i in range(1, total + 1):
        progress_bar(i, total)
        time.sleep(0.1)
    print('\nDone!')

举报

相关推荐

0 条评论