Python中 '\r' 的实际应用

作者: 高正杰 | 来源:发表于2018-01-05 11:21 被阅读438次

    1. 知识储备

    \r 表示将光标的位置回退到本行的开头位置
    \b 表示将光标的位置回退一位

    python 语言中, 使用 print 打印输出时,默认是会进行换行的。如何让其不换行呢?

    • python 2.x 中的语法是在 print 语句的末尾添加逗号,例如 print x, ;或者使用 sys.stdout.write() 对标准输出进行重定向,如此文所示 https://segmentfault.com/q/1010000002810865
    • python 3.x 中,print 成为了一个独立的函数,有一个 end 参数,可以指定输出的结束符,默认是 \n

    本文的实验环境是 Python 3.6.1 |Anaconda 4.4.0 (64-bit),Win10

    2. 在命令行中实现倒计时功能

    # __author__ = "Gao Zhengjie"
    # __date__ = "2018/1/5"
    # __Desc__ = 在一行中不断刷新倒计时
    
    import time
    
    count_down = 10  # 设置倒计时时间,单位:秒
    for i in range(count_down, 0, -1):
        msg = u"\r系统将在 " + str(i) + "秒 内自动退出"
        print(msg, end="")
        time.sleep(1)
    end_msg = "结束" + "  "*(len(msg)-len("结束"))  # 如果单纯只用“结束”二字,无法完全覆盖之前的内容
    print(u"\r"+end_msg)
    

    3. 在命令行中实现“转圈”功能

    # __author__ = "Gao Zhengjie"
    # __date__ = "2018/1/5"
    # __Desc__ = 在一行中不断刷新转圈
    
    import time
    
    count_down = 10  # 设置倒计时时间,单位:秒
    interval = 0.25  # 设置屏幕刷新的间隔时间,单位:秒
    for i in range(0, int(count_down/interval)):
        ch_list = ["\\", "|", "/", "-"]
        index = i % 4
        msg = "\r程序运行中 " + ch_list[index]
        print(msg, end="")
        time.sleep(interval)
    print(u"\r结束" + "  "*len(msg))
    

    4. 在命令行中实现进度条功能

    # __author__ = "Gao Zhengjie"
    # __date__ = "2018/1/5"
    # __Desc__ = 在命令行中实现进度条功能
    
    import time
    
    count_down = 10  # 设置倒计时时间,单位:秒
    interval = 1  # 设置屏幕刷新的间隔时间,单位:秒
    for i in range(0, int(count_down/interval)+1):
        print("\r"+"▇"*i+" "+str(i*10)+"%", end="")
        time.sleep(interval)
    print("\n加载完毕")
    

    注:方块可以从输入法的特殊符号中进行输入。

    相关文章

      网友评论

      本文标题:Python中 '\r' 的实际应用

      本文链接:https://www.haomeiwen.com/subject/ebejnxtx.html