# Python中如何显示程序进度条 > 来源:[Python中如何显示程序进度](https://mp.weixin.qq.com/s/1iXDVGR8rmK_IBWQ3Fn46Q) (2018-09-17) * 一个好的脚本或者程序要能够直观的显示出当前的进度,就像你在Windows上拷贝一个文件,会显示已经完成了多少,还剩下多少,而不是呆呆的看着屏幕等待。下面就介绍几种常用的为脚本添加进度条的方法。 **1、最简单的方法** * 依次打印出当前进度 ```python import time n = 100 for i in range(n): time.sleep(0.1) if(i+1)%10 == 0: print(i+1) ``` * 效果如下: ![1701932404113](image/python_progress/1701932404113.gif) * 但是这种方法有个缺点,就是容易被自己的进度刷屏。 **2、只显示当前进度,避免刷屏** * 在print的时候加上”\r”,这样就可以在同一个地方显示当前进度,而不会被刷屏。 ```python import time n = 100 for i in range(n): time.sleep(0.1) if(i + 1)%10 == 0: print(i+1, end = "\r") ``` ![1701932423986](image/python_progress/1701932423986.gif) **3、添加进度条** * 如果觉得仅仅数字显示进度不够美观,那么可以添加图形进度条 ```python import sys,time #定义一个进度条 def process_bar(num, total): rate = float(num)/total ratenum = int(100*rate) r = '\r[{}{}]{}%'.format('*'*ratenum,' '*(100-ratenum), ratenum) sys.stdout.write(r) sys.stdout.flush() i,n =0,100 for i in range(n): time.sleep(0.01) process_bar(i+1,n) ``` * 效果如下: ![1701932434038](image/python_progress/1701932434038.gif) * 这种方式实质上是每次重新输出一次进度,并且通过 “\r”覆盖原来的进度条。”\r”的作用是回到行首,不过在本人测试中似乎有一点小bug,就是当终端宽度不够时,回到行首就变成了另起一行,就会出现被进度条刷屏的问题。 **4、使用tqdm模块** * 首先是安装该模块,然后运行即可 ```python import time from tqdm import tqdm for i in tqdm(range(100)): time.sleep(0.05) ``` * 效果如下: ![1701932443875](image/python_progress/1701932443875.gif) **5、使用progress模块** * progress模块提供了各种各样的进度条样式。并且能够自定义一些参数 ```python import time from progress.bar import Bar #可以通过fill设置进度条填充符号,默认“#” #可以通过suffix设置成百分比显示 bar = Bar("Loading", fill='$', max = 100, suffix = '%(percent)d%%') for i in bar.iter(range(100)): time.sleep(0.01) ``` ![1701932453144](image/python_progress/1701932453144.gif) * 你还可以设置其他形式的进度条,如下: ![1701932467303](image/python_progress/1701932467303.gif) ==== THE END ====