终端 - 如何覆盖多行?

时间:2015-01-09 16:30:35

标签: python python-2.7

我想覆盖hello。但是当打印\n时,我无法回到那条线。 那么应用程序做了什么来覆盖许多行,如程序htop。

import sys

print 'hello'
print 'huhu',
print '\r\r\rnooooo\r'

3 个答案:

答案 0 :(得分:6)

对于Linux和macOS用户:

import time
import curses

stdscr = curses.initscr()

stdscr.addstr(0, 0, "Hello")

stdscr.refresh()
time.sleep(5)         # deliberate wait, else will automatically delete output
stdscr.addstr(0, 0, "huhu")
stdscr.refresh()

Windows用户请参阅other answer

答案 1 :(得分:6)

colorama第三方模块支持通过" \ x1b改变光标的位置[?:?H"命令字符串。您也可以通过这种方式清除屏幕。

import colorama
colorama.init()
def put_cursor(x,y):
    print "\x1b[{};{}H".format(y+1,x+1)

def clear():
    print "\x1b[2J"

clear()
put_cursor(0,0)
print "hello"
print "huhu"
#return to first line
put_cursor(0,0)
print "noooooo"

模块似乎通过导入ctypes并调用windll.kernel32.SetConsoleCursorPosition来完成此操作。请参阅win32.py, line 58

答案 2 :(得分:-3)

打印添加换行符。为此,最好直接写入stdout。

 sys.stdout.write("mystring\r")