【问题标题】:Clear current line in STDOUT in python在python中清除STDOUT中的当前行
【发布时间】:2019-01-05 03:32:17
【问题描述】:

所以我在 python 中编写了一个程序,重复要求用户输入。过了一会儿,前面的命令开始堆积起来,就这样。

> Ping
Pong!
> Hello
Hey there!
>say whats up?
Whats up?

我编写命令只是为了展示示例

我想添加一个在单词末尾添加...的动画,例如

i choose.

然后清线然后

i choose..

然后清线然后

i choose...

等等,但我需要清除屏幕才能使其正常工作,并且我希望用户命令和响应的历史记录仍然存在。有没有办法使用 python 或导入 os 只删除一行而不是整个屏幕?谢谢!

【问题讨论】:

    标签: python bash operating-system


    【解决方案1】:

    您应该能够使用普通的“打印”来执行此操作,只需在打印语句的末尾附加一个逗号:

    from time import sleep
    
    print ‘I choose.’,  
    sleep(0.5)
    print ‘.’,  
    sleep(0.5)
    print ‘.’ 
    

    编辑:在睡眠中添加以使动画更符合预期。

    【讨论】:

      【解决方案2】:

      您正在寻找回车符\r。当您打印该字符时,前一行将被清除。例如:

      import time
      print('I choose',end='',flush=True)
      time.sleep(1)
      print('\rI choose.',end='',flush=True)
      time.sleep(1)
      print('\rI choose..',end='',flush=True)
      time.sleep(1)
      print('\rI choose...',end='',flush=True)
      

      这实际上是人们在命令行中制作进度条的方式。

      【讨论】:

        猜你喜欢
        • 2014-08-10
        • 2021-10-15
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-06
        相关资源
        最近更新 更多