Python2.7用sys.stdout.write实现打印刷新(多个print显示在一行)

如何能在控制台实现在一行中显示进度的信息呢,就像使用pip安装时的进度那样。

如果用print则会打印成多行,下面这个小技巧可以在一行中打印: 

import time
import sys

if __name__ == "__main__":
    for i in range(1,101):
        sys.stdout.write('\r{}>{}%'.format('='*(i/10), i))
        time.sleep(0.1)
        sys.stdout.flush()

其关键就在于使用'\r'这个转义字符(回到行首),sys.stdout.write首先打印这一行后不带任何结尾,使用了转义字符"\r"使得光标回到行首,再把缓冲区显示出来,就得到了我们所需要的效果。

效果如下动图:

另外这里有一个别人写的进度的第三方库:https://pypi.python.org/pypi/progressbar2

 

---------------------------------------------------------------------------------

关注微信公众号即可在手机上查阅,并可接收更多测试分享~

posted @ 2019-10-19 16:03  ☆星空物语☆  阅读(1303)  评论(0编辑  收藏  举报