有没有办法替换Python中以前输出的文本?
有些事我想做,但不幸的是我完全不知道该怎么做,我怀疑有人问过。所以,基本上,我想要的是程序输出前面区域中的文本。我会尽力解释的 假设我将以下文本输出到屏幕:有没有办法替换Python中以前输出的文本?,python,python-3.x,Python,Python 3.x,有些事我想做,但不幸的是我完全不知道该怎么做,我怀疑有人问过。所以,基本上,我想要的是程序输出前面区域中的文本。我会尽力解释的 假设我将以下文本输出到屏幕: =========================================================================================== ============================================================================
===========================================================================================
===========================================================================================
我的问题是,有没有一种方法,不用PyGoGAME,用一个特定的文本替换行之间的空行,而不用再次打印线条?例如,使用pythonidle或直接在终端中实现这一点是可能的,还是只可能使用pygame或类似的东西
它看起来像这样,例如:
===========================================================================================
Hello World!
===========================================================================================
虽然应该有多个库来处理此任务,但您应该查看
curses
和colorama
。我不确定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()
您可以将该库用于这种纯文本UI。下面是一个简单的示例,首先打印水平行,然后在一段时间后,在前一行上添加一个字符串
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()
例如,给定文件
test.dat
中的输出:
===========================================================================================
===========================================================================================
vim
中的一行简单代码将产生您想要的输出:
:3s/^$/Hello World!
如果要在脚本中自动执行此操作:hello.sh
#!/bin/bash
ex test.dat <<-EOF
:3s/^$/Hello World!
wq " Update changes and quit.
EOF
在同一行中,您可以使用回车符
\r
。跨越多条线,你应该看看。例如,请参见。
===========================================================================================
Hello World!
===========================================================================================