我想做点什么,但不幸的是我完全不知道怎么做,我怀疑别人问过。所以,基本上,我想要的是在前一个区域输出文本的程序。我试着解释一下。
我们说我在屏幕上输出了以下文字:
===========================================================================================
===========================================================================================
我的问题是,有没有一种方法,不使用pygame,用某个文本替换行之间的空行而不再打印行?这可能是使用例如Python IDLE或直接在终端中使用,还是只能使用pygame或其他东西"喜欢"是什么?
看起来像这样,例如:
===========================================================================================
Hello World!
===========================================================================================
答案 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)
虽然应该有多个库来处理此任务,但您应该查看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()
答案 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!
===========================================================================================