我们需要显示进度条的时候可以考虑使用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)
...
**********
>>>