在Python中清除打印

时间:2018-08-26 06:18:08

标签: python python-3.x clear

所以我对编码和本网站都还很陌生,所以如果这很愚蠢,请忍受。

我正在一个个人项目上,想找到一种在python 3.6中清除“ print()”语句的方法。例如:

print("The user would see this text.")

但如果我继续

print("The user would see this text.")
print("They would also see this text.")

有没有一种方法可以使用户只看到第二条打印语句?

我已经看到推荐使用“ os.system('cls')”和“ os.system('clear')”的方法,但每个方法都会出现这些错误:

os.system('cls')

导致

sh:1:cls:未找到

os.system('clear')

导致

未设置TERM环境变量。

很明显,我缺少了一些东西,但是如果您知道的话,将不胜感激。如果您知道做我在想的另一种方式,那也将很棒。感谢您抽出宝贵的时间阅读本文,也感谢您的任何帮助。

编辑:我使用Repl.it作为我的IDE。难道这是该网站的问题吗?

编辑:下载了一个新的IDE进行检查,并且答复有效。如果您是新手并使用Repl.it,请注意某些代码无法正常运行。

1 个答案:

答案 0 :(得分:0)

我过去用来在现有行上“重印”某些东西的方法是直接使用标准输出,再加上回车键,将已打印语句的光标带回到该行的开头(\r =回车),而不是依赖于打印功能。

使用伪代码:

# Send what you want to print initially to standard output, with a carriage return appended to the front of it.  
# Flush the contents of standard output.    
# Send the second thing you want to print to standard output.   

Python中的有效示例:

import sys  

sys.stdout.write('\rThe user would see this text')
sys.stdout.flush()
sys.stdout.write('\rThe user would also see this text')

修改 我想加一个示例,使您可以实际看到代码的运行情况,因为上述工作示例执行得如此之快,以致您永远看不到原始行。下面的代码合并了一个sleep,以便您可以看到它打印第一行,等待,然后使用第二个字符串重新打印该行:

import sys
from time import sleep

sys.stdout.write('\rThe user would see this text')
sys.stdout.flush()

sleep(2)

sys.stdout.write('\rThe user would also see this text')