码迷,mamicode.com
首页 > 编程语言 > 详细

Python 进度条

时间:2018-09-14 22:56:30      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:pre   span   python   设计   安全   机械   ESS   需要   显示   

我这里说明两种方式的进度条

0x00 使用 \r 做输出结尾

先看个例子

import time
import sys

for s in range(11):
    print("[progess][{}{}]|{:.2%}%".format(s*"#", (10-s)*"=", s/10), end="\r")
    time.sleep(0.5)

 上面例子关键点是输出字符串的结尾是回车符\r,就因为这个才能在原地更新进度

 知识补充:

     \n是换行,英文是New line
     \r是回车,英文是Carriage return
     机械打字机有回车和换行两个键作用分别是:
     1、换行就是把滚筒卷一格,不改变水平位置。
     2、回车就是把水平位置复位,不卷动滚筒。

因为回车符石复位,所以可以原地更新进度并显示

 

0x01 使用sys.stdout标准输出

直接上示例代码吧

import time
import sys

for s in range(11):
    sys.stdout.write("#")
    sys.stdout.flush()
    time.sleep(0.5)

 sys.stdout是标准输出,也可以做进度条的

这里需要注意的是:必须要flush,不然只会显示最后的结果,中间的进度更新看不到

为什么呢?

可以想象我们写文件吧,一般是先写到缓存中,缓存写满后再写到硬盘中,

为了安全,一般我们都会执行下flush强制将内容落到硬盘中;

上面进度条就是这样,刷新进度的时候要flush,不然看不到进度更新的。

 

最后进度条的展示设计这个要看个人了,简单也行,复杂也行。

Python 进度条

标签:pre   span   python   设计   安全   机械   ESS   需要   显示   

原文地址:https://www.cnblogs.com/alummox/p/9648925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!