【问题标题】:Is there a way to replace a previously outputted text in Python?有没有办法在 Python 中替换以前输出的文本?
【发布时间】:2017-07-31 19:03:35
【问题描述】:

有些事情我想做,但不幸的是我完全不知道该怎么做,我怀疑有人问过。所以,基本上,我想要的是在前一个区域输出文本的程序。我会尽力解释。

假设我在屏幕上输出了以下文本:

===========================================================================================



===========================================================================================

我的问题是,有没有办法在不使用 pygame 的情况下,用特定文本替换行之间的空白行,而无需再次打印这些行?这是否可以使用例如 Python IDLE 或直接在终端中,还是只能使用 pygame 或“类似”的东西?

它看起来像这样,例如:

===========================================================================================

Hello World!

===========================================================================================

【问题讨论】:

  • 在同一行,您可以使用回车\r。跨越多行,你应该看看curses。参见例如以here 为例。

标签: python python-3.x


【解决方案1】:

您可以将curses 库用于这种纯文本用户界面。这是一个简单的例子,首先打印水平线,然后,一段时间后,在前一行添加一个字符串。

import time, curses

scr = curses.initscr()

scr.addstr(0, 0, "#" * 80)
scr.addstr(2, 0, "#" * 80)
scr.refresh()

time.sleep(1)

scr.addstr(1, 35, "Hello World")
scr.refresh()

【讨论】:

    【解决方案2】:

    虽然应该有多个库来处理此任务,但您应该查看 cursescolorama。我不确定curses,但colorama 绝对有可能(通过pip 安装它)。

    这是一个例子:

    from colorama import *
    
    def pos(x, y):
        return '\x1b['+str(y)+';'+str(x)+'H'
    
    def display():
        init() #just for safety here; needed in Windows
        print(Fore.RED+pos(30, 10)+ 'This string is a different place!')
    
    display()
    

    【讨论】:

      【解决方案3】:

      鉴于您的输出,例如,在文件 test.dat 中:

      ===========================================================================================
      
      
      
      ===========================================================================================
      

      vim 中的 1 行简单的行将产生您想要的输出:

      :3s/^$/Hello World!
      

      如果您想在脚本中自动执行此操作:hello.sh

      #!/bin/bash
      ex test.dat <<-EOF
        :3s/^$/Hello World!
        wq " Update changes and quit.
      EOF
      

      输出:

      ===========================================================================================
      
      Hello World!
      
      ===========================================================================================
      

      【讨论】:

        猜你喜欢
        • 2021-09-29
        • 2017-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-26
        • 1970-01-01
        • 2023-02-26
        • 1970-01-01
        相关资源
        最近更新 更多