2016-03-08 158 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