2017-07-31 78 views
0

有一件事我想做,但不幸的是,我完全不知道如何去做,而且我懷疑有人問過。所以,基本上,我想要的是在前一個區域輸出文本的程序。我會盡力解釋。有沒有辦法在Python中替換之前輸出的文本?

比方說,我輸出下面的文字在屏幕上:

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



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

我的問題是,有沒有辦法,不使用pygame的,更換有一定的文本行之間的空行不會打印線再次?這是可能的使用例如Python空閒或直接在終端,或者它只能使用pygame或類似的東西?

它是這樣的,例如:

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

Hello World! 

=========================================================================================== 
+0

雖然在同一行,你可以使用回車'\ r'。跨越多行,你應該看看['curses'](https://docs.python.org/3/howto/curses.html)。見例如[這裏](https://stackoverflow.com/a/26584483/1639625)爲例。 –

回答

3

可以使用curses庫這種文字只有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() 
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

鑑於你的輸出,也就是說,例如是在文件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! 

=========================================================================================== 
相關問題