终端-如何覆盖多行?


问题内容

我想覆盖hello。但是当a\n被打印时,我无法回到那一行。因此,应用程序会执行哪些操作,从而覆盖了程序htop之类的许多行。

import sys

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

问题答案:

彩色光第三方模块具有用于改变光标的位置,通过“\ 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,第58行