有没有办法在Python中替换以前输出的文本?

时间:2017-07-31 19:03:36

标签: python python-3.x

我想做点什么,但不幸的是我完全不知道怎么做,我怀疑别人问过。所以,基本上,我想要的是在前一个区域输出文本的程序。我试着解释一下。

我们说我在屏幕上输出了以下文字:

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



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

我的问题是,有没有一种方法,不使用pygame,用某个文本替换行之间的空行而不再打印行?这可能是使用例如Python IDLE或直接在终端中使用,还是只能使用pygame或其他东西"喜欢"是什么?

看起来像这样,例如:

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

Hello World!

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

3 个答案:

答案 0 :(得分:3)

您可以将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()

答案 1 :(得分: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()

答案 2 :(得分:2)

根据您的输出,例如,文件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!

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