显示进度条的方法

    大家在下载东西的时候都会显示下载进度,今天,我们就来模仿下如何显示出

如下的进度条

    参考博客园: https://my.oschina.net/jhao104/blog/681507 

    参考脚本之家: http://www.jb51.net/article/55413.htm

 

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

   1. 先来种简单一点的。没有图案的只有百分比的

 1 # coding: utf-8
 2 # 这里推荐第一种用法
 3 
 4 import os, sys, time
 5 
 6 def pro_bar1():
 7     i = 2
 8     for j in range(1, 51):
 9         print u"\r已加载: %s%%" % i, # 百分号在格式化字符后面写成%%的形式
10         time.sleep(0.1)             # 设置时间为0.1s 
11         i += 2
12     # print "...", 结尾加逗号虽然也不会自动换行,但它的光标却会默认换行(猜测)
13 
14 def pro_bar2():
15     i = 2
16     for j in range(1, 51):
17         sys.stdout.write(u"\r已加载: %s%%" % i)
18         time.sleep(0.1)
19         i += 2
20     # sys.stdout.write()不会自动换行, 所以我们在循环结束后给它换行   
21     print                 
22 
23 def pro_bar3():
24     i = 2
25     for j in range(1, 51):
26         print u"已加载: %s%%" % i
27         time.sleep(0.1)
28         if i < 100:
29             os.system("cls")
30         i += 2
31 
32 pro_bar1()
33 # pro_bar2()
34 # pro_bar3()

  \r相当于回车键,光标移动到当前行的首位而不换行

  \n:将光标移动到下一行,并不移动到首位;

 

 

    2. 这种也不难,就是在更新百分比的同时更新#表示进度

# coding: utf-8

import sys, time

j = 2
k = "#"

for i in range(1, 51):
    print u"\r已加载: %s%% ||%s>>" % (j, k),
    time.sleep(0.1)
    j += 2
    k += "#"

    

   上面的print " ... ", 还可以写成这种形式的

    sys.stdout.write(r"\r已加载: %s%% —||%s>>" % (j, k))

    3. 最后一类型是这样子滴。由于是分多行输出的,所以暂时用不了更新的,这回我们用清屏。

# coding: utf-8

import os, time

def pro_bar():                                 # progress bar: 进度条
    sharp = "*"                                # hash和sharp均可以代表#号
    per = 2                                    # percentage: 百分比
    for i in range(1, 51):
        print u"------------------- 已加载: %s%% -----------------" % per
        print "    1    2    3    4    5    6    7    8    9    0"
        print "----0----0----0----0----0----0----0----0----0----0"
        print sharp
        per += 2
        sharp += "*"
        time.sleep(0.1)
        if i < 50:
            os.system("cls")

pro_bar()

 

     上面几种方案的共同问题就是,当井号的数量超过一行时,就会出现这种问题。所以上面我们以%2, %4,

%6这样的方式进行迭代。所以一共也就50个#。

 

posted @ 2016-11-28 13:52  坏小孩D_R  阅读(417)  评论(0编辑  收藏  举报