文字進度條

time庫的基本情況

time庫是Python中處理時間的標準庫

  • 計算機時間的表達
  • 提取獲取系統時間並格式化輸出功能
  • 提供系統級精確計時功能,用於程式效能分析

import time

time.<b>()

time庫包括三類函式

  • 時間獲取:time()ctime()gmtime()
  • 時間格式化:strftime()strtime()
  • 程式計時:sleep(),perf_counter()

時間格式化:將時間以合理的方式表現出來。

例 程式計時應用

程式計時指測量起止動作所經歷時間的過程

例 文字進度條

採用字串方式列印可以動態變化的文字進度條。需要在一行中能夠變化。

import time
scale = 10
print("------執行開始-----")
for i in range(scale  1):
a='*'*i//表示字串*被複制的次數
b='.'*(scale-i)
c=(i/scale)*100
print("{:^3.0f}%[{}->{}]".format(c,a,b))//設定3個槽
time.sleep(0.1)
print("-----執行結束-----")

執行結果

------執行開始-----
0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
-----執行結束-----

單行動態重新整理

  • 重新整理的本質是:用後列印的字元覆蓋之前的字元。
  • 不能換行:print()被控制(預設換行)
  • 要能回退:列印後游標退回到之前的位置\r
import time
scale = 10
print("------執行開始-----")
for i in range(scale  1):
a='*'*i
b='.'*(scale-i)
c=(i/scale)*100
print("\r{:^3.0f}%[{}->{}]".format(c,a,b),end="")
time.sleep(0.1)
print("-----執行結束-----")

完整實現

import time
scale = 50
print("執行開始".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="")
time.sleep(0.1)
print("\n" "執行結束".center(scale//2,'-'))

需要在命令提示符下進行執行操作,在IDLE下\r的功能被遮蔽