在python中覆盖以前的打印值?

时间:2014-02-08 13:28:41

标签: python

如何在python中覆盖以前的“print”值?

print "hello"
print "dude"
print "bye"

将输出:

hello
dude
bye

但我想覆盖这个价值。

在这种情况下,输出将是:

bye

6 个答案:

答案 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