2010-10-15 12 views
2

我有一個用python編寫的統計應用程序,它在計時器上刷新了帶有統計信息的ssh屏幕。現在它使用os.system('clear')清除屏幕,然後用統計信息輸出多行數據。python - 多行stdout刷新問題

我想做的只是做一個\ r而不是執行清除,但只適用於一行,是否有可能做到這一點與多行?

我想要做的一個經典的例子是,當您執行「top」命令時,它會列出當前進程並更新屏幕而不執行「清除」並且它有很多行。

任何人有任何提示?

+0

能否請您澄清:你要(1)明確的,並僅顯示1已更改或(2)清晰顯示只有第1統計的網頁值得您的程序輸出的統計數據頁面? – inspectorG4dget 2010-10-15 05:13:51

+0

如果可能的話,選項1會很好,選項2也可以。 – Joe 2010-10-15 05:18:58

回答

1

它並沒有真正回答你的問題,但調用os.system清除終端(在不同操作系統上運行的系統除外)沒有任何問題,在這種情況下你可以使用:

os.system('cls' if os.name=='nt' else 'clear')

+1

應該使用子進程模塊中的適當函數,而不是os.system。 – 2010-10-15 13:12:22

0

對於簡單的應用,你可以使用:

print('\n' * number_of_lines) 

對於更高級的存在標準庫curses模塊。

+0

這顯然有效,但我不想只通過寫新行清除屏幕,我想要的是當前屏幕更新。就像「top」命令在linux上的工作方式一樣,只是在不清除屏幕的情況下更新當前屏幕。 – Joe 2010-10-15 06:31:56

1

解決的問題有:

import curses 
window = curses.initscr() 
window.addstr(1, 0, "my text") 
window.refresh() 
curses.endwin()