我在Python中使用curses模塊通過讀取文件實時顯示輸出。 字符串消息使用addstr()函數 輸出到控制檯,但無法在任何需要的位置打印到換行符。python curses中的新行輸出
示例代碼:
import json
import curses
w=curses.initscr()
try:
while True:
with open('/tmp/install-report.json') as json_data:
beta = json.load(json_data)
w.erase()
w.addstr("\nStatus Report for Install process\n=========\n\n")
for a1, b1 in beta.iteritems():
w.addstr("{0} : {1}\n".format(a1, b1))
w.refresh()
finally:
curses.endwin()
上面是不是真的輸出字符串到一個新的線(請注意在addstr成\ n())與每一次迭代。相反,如果我調整終端窗口的大小,腳本會失敗並出錯。
w.addstr("{0} ==> {1}\n".format(a1, b1))
_curses.error: addstr() returned ERR
爲什麼不'的print()'您的信息?您是否有理由需要說明,回滾或中斷打印過程? –
@WayneWerner當然,我試圖在後端更新json文件時實時輸出數據。爲此我正在使用curses。像linux'top'命令格式。 print()語句不適合在curses上下文中,因爲我正在循環讀取文件。所以print()會混亂控制檯 – cool77
@SurestTexas如果有人沒有給出他們正在使用的東西的理由我不認爲他們有一個很好的理由。經驗表明,大部分時間......他們不是! –