zoukankan      html  css  js  c++  java
  • python实现进度条

    先说一下文本系统的控制符:
    
    :   将光标移动到当前行的首位而不换行;
    
    :   将光标移动到下一行,并不移动到首位;
    
    : 将光标移动到下一行首位。
        
    环境:
    root@ubuntu16:/alex/py/jingdutiao# python3
    Python 3.5.2 (default, Jul  5 2016, 12:43:10) 
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
        
    方式1:
    root@ubuntu16:/alex/py/jingdutiao# cat test1.py 
    #!/usr/bin/env python
    from __future__ import division
    import sys,time
    j = '#'
    if __name__ == '__main__':
      for i in range(1,61):
        j += '#'
        sys.stdout.write(str(int((i/60)*100))+'% '+j+'->'+ "
    ")
        sys.stdout.flush()
        time.sleep(0.5)
    print
    
    root@ubuntu16:/alex/py/jingdutiao# python3 test1.py 
    98% ############################################################->
    
    
    方式2:
    root@ubuntu16:/alex/py/jingdutiao# cat test4.py 
    #!/usr/bin/env python 
    # -*- coding:utf-8 -*-
    __author__ = 'l'
    
    import sys
    from time import sleep
    def viewBar(i):
        """
        进度条效果
        :param i:
        :return:
        """
        output = sys.stdout
        for count in range(0, i + 1):
            second = 0.1
            sleep(second)
            output.write('
    complete percent ----->:%.0f%%' % count)
        output.flush()
    
    viewBar(100)
    root@ubuntu16:/alex/py/jingdutiao# python3 test4.py 
    complete percent ----->:100%
    
    
    方式3:
    tqdm模块
        tqdm是一个快速、扩展性强的进度条工具库,
        其githup地址:https://github.com/tqdm/tqdm 
        
    1)安装:
    直接使用pip安装:
        pip install tqdm
    2)使用:
    from time import sleep
    from tqdm import tqdm
    for i in tqdm(range(1, 500)):
        sleep(0.01)
        
    自己实操:在ubuntu上默认安装到2.7环境变量里去了
    root@ubuntu16:/alex/py/jingdutiao# pip install tqdm
    Collecting tqdm
      Downloading tqdm-4.8.4-py2.py3-none-any.whl
    Installing collected packages: tqdm
    Successfully installed tqdm-4.8.4
    You are using pip version 8.1.1, however version 8.1.2 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    
    pip install --upgrade pip
    pip install tqdm
    pip -V
    cd /usr/local/lib/python2.7/dist-packages/
    cp -r  tqdm tqdm-4.8.4.dist-info/ /usr/local/lib/python3.5/dist-packages
    root@ubuntu16:/alex/py/jingdutiao# cat test5.py 
    from time import sleep
    from tqdm import tqdm
    for i in tqdm(range(1, 500)):
        sleep(0.01)
    root@ubuntu16:/alex/py/jingdutiao# python3  test5.py 
    100%|████████████████████████████████████████████████████████████████████████| 499/499 [00:05<00:00, 92.20it/s
    
    
    
    方式4:
    root@ubuntu16:/alex/py/jingdutiao# cat   test2.py 
    
    class ProgressBar():
      def __init__(self, width=50):
        self.pointer = 0
        self.width = width
      def __call__(self,x):
         # x in percent
         self.pointer = int(self.width*(x/100.0))
         return "|" + "#"*self.pointer + "-"*(self.width-self.pointer)+ "|
     %d percent done" % int(x)
    
    if __name__ == '__main__':
        import time,os
    pb = ProgressBar()
    for i in range(101):
        os.system('clear')
        print( pb(i))
        time.sleep(0.1)
    
    root@ubuntu16:/alex/py/jingdutiao# 
    执行结果:
    |#################################################-|
    percent done
    |##################################################|   #输出100行内容,但是在屏幕会实时清屏,只展示1行 
    percent done
    
    
    方式5:
    root@ubuntu16:/alex/py/jingdutiao# python3   test3.py 
    ====================================================================================================>100%
    #cat test3.py 
    import sys
    import time
    def view_bar(num,total):
        rate = num / total
        rate_num = int(rate * 100)
        #r = '
     %d%%' %(rate_num)
        r = '
    %s>%d%%' % ('=' * rate_num, rate_num,)
        sys.stdout.write(r)
        sys.stdout.flush
    if __name__ == '__main__':
        for i in range(0, 101):
            time.sleep(0.1)
            view_bar(i, 100)
    

      

  • 相关阅读:
    49. 字母异位词分组
    73. 矩阵置零
    Razor语法问题(foreach里面嵌套if)
    多线程问题
    Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data
    How to execute tons of tasks parallelly with TPL method?
    How to sort the dictionary by the value field
    How to customize the console applicaton
    What is the difference for delete/truncate/drop
    How to call C/C++ sytle function from C# solution?
  • 原文地址:https://www.cnblogs.com/jsben/p/5792952.html
Copyright © 2011-2022 走看看