代码编织梦想


在Python编程中,进度条是一种常用的工具,用于向用户展示程序的执行状态和进度。本文将介绍几种实现进度条的方法,适合新手小白理解,并通过简单的示例来帮助你掌握这些技巧。

方法一:使用print()函数实现文本进度条

最基本的方式是通过打印文本来显示进度条。这种方法不依赖任何额外的库。

示例代码

import time
import sys

def print_progress_bar(iteration, total, prefix='', length=50):
    percent = (iteration / total) * 100
    filled_length = int(length * iteration // total)
    bar = '█' * filled_length + '-' * (length - filled_length)
    sys.stdout.write(f'\r{prefix} |{bar}| {percent:.2f}% Complete')
    sys.stdout.flush()

# 示例用法
total_steps = 100
for i in range(total_steps + 1):
    print_progress_bar(i, total_steps)
    time.sleep(0.1)

print()  # 换行,以便最后输出后换行

解释在这个例子中,print_progress_bar函数负责计算进度并打印进度条。sys.stdout.writesys.stdout.flush用于动态更新同一行的输出。

方法二:使用tqdm库

tqdm是一个非常流行且强大的进度条库,能够轻松地在循环中添加进度条。
示例代码

from tqdm import tqdm
import time

# 示例用法
total_steps = 100
for i in tqdm(range(total_steps)):
    time.sleep(0.1)  # 模拟工作

解释在这个示例中,我们只需将range传给tqdm,它会自动为我们生成进度条。tqdm库提供了丰富的功能,还可以显示估计剩余时间等信息。

方法三:使用progress库

progress库也是一个用于创建进度条的库,提供不同样式和自定义选项。
示例代码

from progress.bar import Bar
import time

# 示例用法
total_steps = 100
bar = Bar('Processing', max=total_steps)

for i in range(total_steps):
    time.sleep(0.1)  # 模拟工作
    bar.next()       # 更新进度
bar.finish()         # 完成

解释
在这个例子中,我们使用Bar类创建一个进度条,并在每次迭代时调用next()方法来更新进度,最后调用finish()表示完成。

方法四:使用alive-progress库

alive-progress是另一个美观且易用的进度条库,支持动画效果。
示例代码

from alive_progress import alive_bar
import time

# 示例用法
total_steps = 100
with alive_bar(total_steps) as bar:
    for i in range(total_steps):
        time.sleep(0.1)  # 模拟工作
        bar()            # 更新进度

解释
在这个例子中,我们使用alive_bar来创建进度条,它可以自动处理刷新和清理,非常方便。

方法五:使用rich库

rich库不仅可以用于创建进度条,还可以为终端输出增加丰富的格式和样式。

示例代码

from rich.progress import Progress
import time

# 示例用法
total_steps = 100
with Progress() as progress:
    task = progress.add_task("Processing...", total=total_steps)

    for i in range(total_steps):
        time.sleep(0.1)  # 模拟工作
        progress.update(task, advance=1)  # 更新进度

解释
在这个例子中,我们创建了一个带有任务的进度条,可以轻松地对进度进行更新。

方法六:自定义图形进度条

如果你想要更具个性化的进度条,可以自己实现一个图形进度条。例如,使用字符或图形符号来表示进度。
示例代码

import time
import sys

def custom_progress_bar(iteration, total, length=40):
    percent = (iteration / total) * 100
    filled_length = int(length * iteration // total)
    bar = '#' * filled_length + '-' * (length - filled_length)
    
    sys.stdout.write(f'\r[{bar}] {percent:.2f}%')
    sys.stdout.flush()

# 示例用法
total_steps = 100
for i in range(total_steps + 1):
    custom_progress_bar(i, total_steps)
    time.sleep(0.1)

print()  # 换行

解释
在这个例子中,我们自定义了一个进度条,使用#符号来表示已完成的部分,-符号表示未完成的部分,最终输出百分比。

总结

通过以上六种方法,你可以灵活地在Python中实现进度条。在实际开发中,可以根据需求选择合适的实现方式,从简单的文本进度条到功能丰富的第三方库,满足不同场景的需求。希望这篇文章能帮助你更好地理解如何实现进度条。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42212872/article/details/144070590

python 进度条百分比_Python实现输出程序执行进度百分比的方法-爱代码爱编程

本文实例讲述了Python实现输出程序执行进度百分比的方法。分享给大家供大家参考,具体如下: 对于一些大型的Python程序,我们需要在命令行输出其百分比,显得更加友好,以免被人误会程序陷入死循环、假死的窗体。 关键是利用到不换行的输出符\r,\r的输出,将直接覆盖掉此行的内容。 比如如下的程序,是一个i从0自加的十万的过程,即使对于现在高性能的

python进度条设计方法_Python 实现进度条的六种方式-爱代码爱编程

这篇文章主要介绍了Python 实现进度条的六种方式,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一、普通进度条 示例代码 import sys import time def progress_bar(): for i in range(1, 101): print("\r", end="") print("Do

python进度条设计函数_python实现进度条-爱代码爱编程

import sysimport timedef view_bar(num, total):rate = num / totalrate_num = int(rate * 100)r = '\r[%s%s]%d%% ' % ("="*num, " "*(100-num), num, )sys.stdout.write(r)sys.stdout.flush(

python 实现进度条-爱代码爱编程

Python 实现进度条的六种方式_python_脚本之家 (jb51.net)https://www.jb51.net/article/203570.htm tqdm用法  tqdm用法总结_ai-ai360的博客-CSDN博客https://blog.csdn.net/q_xiami123/article/details/110233904?utm

【爬虫系列】python如何实现进度条效果?_python进度条-爱代码爱编程

一、需求 在爬取数据过程中,发现不看输出日志是不知道当前的爬取进度,而单纯靠控制台输出日志信息也不方便判断。因此,就想办法给爬取过程加个进度条,实时展示当前的爬取进度。 有了这个需求和想法之后,那如何实现呢?目前有两类实现显示进度条的方案,一种是使用 Python 内置模块,比如 time 模块;另一种是引入第三方专用模块,比如 tqdm 模块,ali

【python系列】python数据类型之集合-爱代码爱编程

探索Python集合数据类型 Python 中的集合(set)是一种强大且灵活的数据结构,适用于存储不重复的元素并支持高效的集合操作。本篇文章将从定义、操作到练习题,全面解析 Python 的集合数据类型。 1. 定

python操作elasticsearch-爱代码爱编程

使用elasticsearch 6.x版本,操作es数据。 #! -*- coding:utf-8 -* import time from elasticsearch import Elasticsearch, helpers class EstUtil: _instance = None def __new__(cls, *ar

使用node2vec进行知识图谱嵌入的详细教程-爱代码爱编程

在知识图谱嵌入中,实体和关系被表示为低维向量(或称为嵌入),这些嵌入保留了原始图结构中的语义信息。本文将详细介绍如何使用Node2Vec方法对知识图谱进行嵌入。 Node2Vec 是一种基于随机游走和 Word2Vec 的

图论入门编程-爱代码爱编程

卡码网刷题链接:98. 所有可达路径 一、题目简述 二、编程demo 方法①邻接矩阵 from collections import defaultdict #简历邻接矩阵 def build_graph(): n, m = map(int,input().split()) graph = [[0 for _ in

python内置函数-爱代码爱编程

Python内置函数 Python 内置函数是 Python 解释器自带的函数,它们不需要额外的导入就可以直接使用。这些内置函数提供了许多常用的功能,比如数学运算、类型检查、输入输出等。以下是一些常用的 Python 内置

python语法基础(一)-爱代码爱编程

🌈个人主页:羽晨同学  💫个人格言:“成为自己未来的主人~”   关键字参数和不定长参数 关键字参数主要体现在函数的调用上 使用关键字参数的好处是,可以不按照形参的参数传参 比如说,我们定义一个函数 def c1(name,age): print(f'姓名: {name}, 年龄:{age}') c1("zhangsan",10