python制作文本进度条 python文本进度条流程图_python 文本换行

每日一句,送给最珍贵的你:

知行合一!

往日推荐:Python字符串及Time库介绍

python制作文本进度条 python文本进度条流程图_Time_02

程序员Bob(ID:gh_8a1a1530d0bf)  第218次推文   图源:小张

昨天我们学到了Python中Time库的使用,今天就可以开始用Time库完成进度条的操作啦!

进度条-反映某一事件的运行状态

文本进度条:采用字符串方式打印可以动态变化的文本进度条,且在一行中能够逐渐变化。

其实学过进度条的就知道进度条其实只是一个模拟化的持续进程,但也在一定程度上能够反映运行的一个进度情况。

在这里我们需要用到Time库中的sleep函数,用它来模拟持续化进程。

比如下面这段代码就演示了一个简单的进度条实例:

import time  #调用Time库scale = 10   #定义文本进度条大概的宽度为10print("------执行开始------")for i in range(scale+1):    #引入一个for循环    a='*'*i                 #动态变化的*    b='.'*(scale-i)         #动态变化的.    c=(i/scale)*100  #输出进度条的百分比    print("{:^3.0f}%[{}-{}]".format(c,a,b))    time.sleep(0.1)print("------执行结束------")

运行结果:

python制作文本进度条 python文本进度条流程图_Time_03

上面提到的是简单的文本进度条,其实用得更多还是单行动态刷新的文本进度条,即会在显示文本进度条时即时刷新——用后打印的字符信息覆盖之前打印的信息。

  1. 单行动态刷新的关键是\r。
  2. 刷新的本质是用后打印的字符覆盖之前的字符;
  3. 且不能换行:在用print时控制输出;
  4. 要能回退:打印后光标退回到之前的位置\r。

初始版本如下:

import timefor i in range(101):    print("\r{:3}%".format(i),end=" ")  #\r让光标返回到行首;end=" "让光标不进行换行操作    time.sleep(0.1)

运行结果(两张为连续变化):

python制作文本进度条 python文本进度条流程图_python 文本换行_04

python制作文本进度条 python文本进度条流程图_进度条_05

最终版本:

import timescale = 50print("执行开始".center(scale//2,"-"))start=time.perf_counter()  #记录打印开始的时间for i in range(scale+1):    a='*'*i    b='.'*(scale-i)    c=(i/scale)*100    dur=time.perf_counter()-start    print("\r{:^3.0f}%[{}-{}]{:.2f}s".format(c,a,b,dur),end=' ')    #增加了dur变量,用来记录打印文本进度条所消耗的时间。    time.sleep(0.1)print("\n"+"执行结束".center(scale//2,'-'))

运行结果(两张为连续变化):

python制作文本进度条 python文本进度条流程图_Time_06

python制作文本进度条 python文本进度条流程图_python 文本换行_07

未完待续...

python制作文本进度条 python文本进度条流程图_python制作文本进度条_08