【问题标题】:How can I print a dynamic text in terminal using Python?如何使用 Python 在终端中打印动态文本?
【发布时间】:2018-08-28 16:59:42
【问题描述】:

我想以如下形式打印一个常量消息:

Time remaining: X Seconds

X 将是一个倒计时数字。但我不想有这样的输出:

Time remaining: 5 Seconds
Time remaining: 4 Seconds
Time remaining: 3 Seconds
Time remaining: 2 Seconds ...

我只想在同一文本行中更改数字。是否可以使用转义序列或其他方式?

【问题讨论】:

    标签: python-3.x text terminal


    【解决方案1】:

    print 方法中还有flush 参数(我也刚刚发现):

    from time import sleep
    
    for i in range(10):
        print(f"\rTime remaining: {i} Seconds", end='', flush=True)
        sleep(1)
    

    【讨论】:

      【解决方案2】:

      是的,你可以!

      请参考here找到的答案

      对代码进行了一些修改,使其看起来更像您想要的,并使用更新的字符串格式。

      from time import sleep
      import sys
      
      for i in range(10):
          sys.stdout.write("\rTime remaining: {} Seconds".format(i))
          sys.stdout.flush()
          sleep(1)
      print '\n'
      

      【讨论】:

      • 不,这不是我要问的......我希望相同的第一行仅在数字的位置发生变异。这就是为什么我将其称为“动态”。
      【解决方案3】:

      print 函数中添加参数 end='\r'

      import time
      
      x = 10
      width = str(len(str(x)))
      while x > 0:
          print('Time remaining: {{:{:}}} seconds'.format(width).format(x), end='\r')
          x -= 1
          time.sleep(1)
      

      您也可以参考this post

      【讨论】:

      • 我复制了您的代码,但它照常打印。不过这篇文章很有用。
      【解决方案4】:

      I found this link

      并让它发挥作用。那里的“东西”表明在倒计时之前显示的文本没有被“清除”

      import time
      import sys
      
      num = 5
      print('stuff')
      
      while(num >= 0):
          sys.stdout.write("\rTime remaining: {} Seconds".format(num))
          sys.stdout.flush()
          time.sleep(1)
          num -= 1
      

      【讨论】:

        【解决方案5】:

        你可以设置 end=" " 去掉换行符并添加回车 '\r'

        所以应该为你工作的正确程序是:

        n = 100
        while n > 0:
            print('\rTime remaining: {} Seconds'.format(n), end=' ')
            n -= 1
            time.sleep(1)
        print(' ')
        

        【讨论】:

          猜你喜欢
          • 2011-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-17
          • 1970-01-01
          相关资源
          最近更新 更多