1. 程式人生 > 其它 >python實現命令列中的進度條原理

python實現命令列中的進度條原理

常常在一些安裝過程中會看到類似如下的進度條:

Progress: |██████████████------------------------------------| 28.1%

特點是:它在同一行顯示,進度不斷重新整理。
這是如何實現的?探索了一下,執行一個python指令碼實現起來還挺容易的,來看一個指令碼:

print(f'abc')

很普通的列印一個字串。
再來:

print(f'abc', end='\r')

執行發現沒有任何內容,不對再仔細看看,是列印太快了覆蓋了,加個sleep會明顯一些:

import time
print(f'abc', end='\r')
time.sleep(1)

執行發現會先列印abc然後被提示符覆蓋,原因是'\r'讓游標移動到行首,並不會移動到下一行,所以sleep結束後就被命令列提示符覆蓋了(更多瞭解)。

所以實現一個進度條的原理大概是這樣的:

import time
print(f'abc', end='\r')
time.sleep(1)
print(f'efg', end="\r")
print()

每一次把上一次的重新整理,最後再加一個print換行即可。

參考:
一個手寫的進度條示例:https://stackoverflow.com/a/34325723
現成的庫:https://github.com/tqdm/tqdm