2016-03-08 107 views
0

我有下面的代碼非常簡單如何編輯控制檯輸出

stdout.write("Hello World") 
stdout.write("\rBye world") 
stdout.write("\rActually hello back") 

它打印預期「其實打招呼回」但是如果我是加一個換行符

stdout.write("\n") 

我怎麼能去回一個換行符,然後到行的開頭,所以我實際上可以輸出「Hi」而不是

Actually hello back 
Hi 

我試過了

stdout.write("\r") 
stdout.write("\b") 

然而,他們都沒有看起來伎倆。最終目標是顯示大塊文本,然後實時更新輸出,而無需再次寫入。我如何在Python中實現這一點?

編輯 我的問題是不同的建議,因爲我不想修改一個單一的行。我希望能夠打印4-5行文本,然後實時替換它們,而不是僅修改一行。

+2

[在python中替換控制檯輸出]可能的重複(http://stackoverflow.com/questions/6169217/replace-console-output-in-python) –

+0

@TonyBabarino檢查編輯 – Bula

回答

0

那麼,如果你想獲得對終端的完全控制,我會建議使用curses library

curses模塊提供了一個到curses庫的接口, 事實上用於便攜式高級終端處理的標準。

使用它,您可以編輯在終端多行這樣的:

import curses 
import time 

stdscr = curses.initscr() 

stdscr.addstr("line 1\n") 
stdscr.addstr("line 2\n") 
stdscr.refresh() 
time.sleep(3) 

stdscr.erase() 
stdscr.addstr("edited line 1\n") 
stdscr.addstr("edited line 2\n") 
stdscr.refresh() 
time.sleep(3) 

curses.endwin() 

這個庫的能力要大得多,雖然。完整教程here