我想覆盖hello
。但是当打印\n
时,我无法回到那条线。
那么应用程序做了什么来覆盖许多行,如程序htop。
import sys
print 'hello'
print 'huhu',
print '\r\r\rnooooo\r'
答案 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")