如何在python中覆盖以前的“print”值?
print "hello"
print "dude"
print "bye"
将输出:
hello
dude
bye
但我想覆盖这个价值。
在这种情况下,输出将是:
bye
答案 0 :(得分:5)
检查curses library,curses库为基于文本的终端提供与终端无关的屏幕绘制和键盘处理功能。一个例子:
x.py:
from curses import wrapper
def main(stdscr):
stdscr.addstr(1, 0, 'Program is running..')
# Clear screen
stdscr.clear() # clear above line.
stdscr.addstr(1, 0, 'hello')
stdscr.addstr(2, 0, 'dude')
stdscr.addstr(3, 0, 'Press Key to exit: ')
stdscr.refresh()
stdscr.getkey()
wrapper(main)
print('bye')
运行它python x.py
答案 1 :(得分:2)
import os
print "hello"
print "dude"
if <your condition to bye print >
os.system('clear')
print "bye"
答案 2 :(得分:2)
您可以使用sys.stdout.write
来避免每次通话时print
打印的换行符和回车符\r
返回到行首:
import sys
sys.stdout.write("hello")
sys.stdout.write("\rdude")
sys.stdout.write("\rbye")
要覆盖上一句的所有字符,您可能需要添加一些空格。
在使用print
作为函数的python 3或python 2上,您可以使用end
参数:
from __future__ import print_function #Only python 2.X
print("hello", end="")
print("\rdude ", end="")
print("\rbye ", end="")
请注意,它不适用于IDLE。
答案 3 :(得分:2)
作为
的替代方案os.system('clear')
您也可以使用
print "\n" * 100
值100
可以更改为您需要的值
答案 4 :(得分:1)
最好的方法是。
写
sys.stdout.flush()
打印后。
示例:
import sys
sys.stdout.write("hello")
sys.stdout.flush()
sys.stdout.write("bye")
输出:再见
答案 5 :(得分:0)
在Python 3
:
print("hello", end='\r', flush=True)
print("dude", end='\r', flush=True)
print("bye", end='\r', flush=True)
输出:
bye