(python 进度条) Python实现实时显示进度条的六种方法
Python实现实时显示进度条的主要有以下六种方法:
- 使用for循环 + sys.stdout.write
- 使用tqdm模块
- 使用progressbar模块
- 使用进度条工具 progressbar2模块
- 使用tkinter创建图形化进度条
- 使用rich模块的进度条
下面,我将一一进行详细说明:
- 使用for循环 + sys.stdout.write
import sys
import time
def progress_bar(num, total):
rate = num / total
rate_num = int(rate * 100)
r = '\r[%s%s]%d%%' % ("="*rate_num, " "*(100-rate_num), rate_num, )
sys.stdout.write(r)
sys.stdout.flush()
if __name__ == '__main__':
for i in range(101):
time.sleep(0.1)
progress_bar(i, 100)
复制这段代码到你的python文件即可。这段代码创建一个progress_bar函数用于在控制台中实时输出进度条。
- 使用tqdm模块
这个模块可以直接在控制台显示进度条。
首先,你需要使用pip install tqdm
来安装tqdm。
然后可以使用如下代码:
from tqdm import tqdm
import time
for i in tqdm(range(100)):
time.sleep(0.01)
正如你所见,使用tqdm模块更简洁方便。
- 使用progressbar模块
首先你需要通过pip install progressbar
来安装progressbar。
然后可以使用如下代码:
import progressbar
import time
bar = progressbar.ProgressBar(max_val=100)
for i in range(101):
bar.update(i)
time.sleep(0.02)
- 使用progressbar2模块
progressbar2模块与progressbar用法类似,只不过在显示方式和一些进阶功能上有所不同。你可以使用pip install progressbar2
来安装。
然后可以使用如下代码:
import progressbar
import time
proc_bar = progressbar.ProgressBar()
for i in proc_bar(range(100)):
time.sleep(0.02)
- 使用tkinter创建图形化进度条
首先,你需要确保电脑上已经安装了tkinter。
import tkinter
import time
win = tkinter.Tk()
win.title('ProgressBar')
win.geometry('300x100')
progress = tkinter.ttk.Progressbar(win, length=200)
progress.pack(padx=5, pady=20)
for i in range(101):
progress["value"] = i
win.update()
time.sleep(0.02)
win.mainloop()
- 使用rich模块的进度条
首先你需要通过pip install rich
来安装rich。
然后可以使用如下代码:
from rich.progress import Progress
import time
with Progress() as progress:
task = progress.add_task("[cyan]Processing...", total=100)
while not progress.finished:
progress.update(task, advance=0.5)
time.sleep(0.02)
以上就是Python实现实时显示进度条的六种方法,其中有些需要安装第三方库,缺失的话可以使用pip install 库名
的方式进行安装。如果在使用过程中有任何问题,尽情告诉我。
(python查看已安装的库) python查看自己安装的所有库并导出的命令 查看 Python 库:pip list 和 pip freeze 全网首发(图文详解1)
(float division by zero) Python报”ZeroDivisionError “的原因以及解决办法 解决Python ZeroDivisionError的方法 全网首发(图文详解1)