Python不換行列印進度條
阿新 • • 發佈:2018-12-15
我們需要顯示進度條的時候可以考慮使用print函式打印出來,比如像下面的實現方法:
# -*- coding: utf-8 -*-
import time
for i in range(1, 11):
# do something
print('*' * i)
time.sleep(1)
進度效果:
*
**
***
****
*****
******
*******
********
*********
**********
由於print的end引數預設'\n'是會換行的,所以我們看到的進度條是換行的,效果並不是我們想要的在同一行顯示。
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print """ print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
我們先看一下\r的含義,\r表示在本行的開頭繼續輸出,區別與\n在下一行輸出。如下面的程式碼所示使用\r,內容123會本行abcdefg繼續輸出把abc覆蓋了,最終顯示123defg。
>>> print('abcdefg\n123')
abcdefg
123
>>>
>>> print('abcdefg\r123')
123defg
>>>
>>> print('abcdefg\r12345')
12345fg
>>>
利用\r的特性我們就可以在同一行顯示進度條了:
>>> import time >>> for i in range(1, 11): ... # do something ... print('*' * i, end='\r') ... time.sleep(1) ... ********** >>>