zoukankan      html  css  js  c++  java
  • Python Trick —— 命令行显示

    1 应用场景

    在命令行展示下,有以下两种场景。

    • 进度条显示。在同一行展示不断的更新的进度条。
    • 信息显示/隐藏控制。比如希望向多个用户展示不同信息,各个用户彼此保密。

    2 进度条展示

    跟c语言类似,打印使用回车符' '。如下例。

    import time
    for i in range(100):
        print("
    当前下载进度{i}%,请耐心等待".format(i=i), end='')
        time.sleep(0.1)
    
    print("
    下载完毕。                             ")
    

    3 信息显示/隐藏控制

    在命令行下,向两个用户展示两条信息。

    • 首先直接展示“信息1”,用户1来到电脑前记录“信息1”,之后通过回车将信息1隐藏。
    • 然后,用户2来到电脑前,敲击回车,显示信息2.

    如下所示。其中wait_key函数支持windows/ubuntu。

    import os
    import sys
    import tty
    import termios
    
    def wait_key():
        ''' Wait for a key press on the console and return it. '''
        result = None
        if os.name == 'nt':
            import msvcrt
            result = msvcrt.getch()
        else:
            import termios
            fd = sys.stdin.fileno()
    
            oldterm = termios.tcgetattr(fd)
            newattr = termios.tcgetattr(fd)
            newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
            termios.tcsetattr(fd, termios.TCSANOW, newattr)
    
            try:
                result = sys.stdin.read(1)
            except IOError:
                pass
            finally:
                termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
    
        return result
    
    def cmp(a, b):
        return (a > b) - (a < b)
    
    def wait_enter_key():
        while cmp(wait_key(), '
    ') != 0:
            pass
    
    # 显示信息1
    print("信息1  (按下[回车]键,将隐藏信息1)", end='')
    sys.stdout.flush()
    
    # 回车后隐藏信息1
    wait_enter_key()
    print("
    请再次按下[回车]键,将显示信息2           ", end='')
    
    # 再次回车后显示信息2
    wait_enter_key()
    print("
    信息2                                      ")
    

    4 引用

  • 相关阅读:
    数据结构之线性顺序表ArrayList(Java实现)
    大话数据库技术之数据的检索
    JQuery表单元素过滤选择器
    字典序最小问题
    liferay中数据库表的解析未完
    转载如何实现portlet之间的传递参数
    SpringMVC学习笔记1
    深度优先搜索算法
    Ants-穷举算法
    三角形-穷举算法
  • 原文地址:https://www.cnblogs.com/sword03/p/10001849.html
Copyright © 2011-2022 走看看