首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换Python中的控制台输出

替换Python中的控制台输出
EN

Stack Overflow用户
提问于 2011-05-30 01:25:17
回答 11查看 128.9K关注 0票数 135

我想知道如何用Python创建一个漂亮的控制台计数器,就像在某些C/C++程序中一样。

我有一个做事情的循环,当前的输出是这样的:

代码语言:javascript
运行
复制
Doing thing 0
Doing thing 1
Doing thing 2
...

更整洁的做法是只更新最后一行;

代码语言:javascript
运行
复制
X things done.

我已经在许多控制台程序中看到了这一点,我想知道我是否会/如何在Python中做到这一点。

EN

Stack Overflow用户

发布于 2020-04-26 06:42:50

我前段时间写了这篇文章,真的很开心。请随意使用它。

它需要一个indextotal,也可以选择titlebar_length。完成后,用复选标记替换沙漏。

⏳ Calculating: [████░░░░░░░░░░░░░░░░░░░░░] 18.0% done

✅ Calculating: [█████████████████████████] 100.0% done

我提供了一个可以运行来测试它的示例。

代码语言:javascript
运行
复制
import sys
import time

def print_percent_done(index, total, bar_len=50, title='Please wait'):
    '''
    index is expected to be 0 based index. 
    0 <= index < total
    '''
    percent_done = (index+1)/total*100
    percent_done = round(percent_done, 1)

    done = round(percent_done/(100/bar_len))
    togo = bar_len-done

    done_str = '█'*int(done)
    togo_str = '░'*int(togo)

    print(f'\t⏳{title}: [{done_str}{togo_str}] {percent_done}% done', end='\r')

    if round(percent_done) == 100:
        print('\t✅')


r = 50
for i in range(r):
    print_percent_done(i,r)
    time.sleep(.02)

我也有一个版本的响应进度条取决于终端宽度使用shutil.get_terminal_size(),如果这是感兴趣的。

票数 16
EN
查看全部 11 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6169217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档