1. 程式人生 > >Python不換行列印進度條

Python不換行列印進度條

我們需要顯示進度條的時候可以考慮使用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)
...
**********
>>>