所以我对编码和本网站都还很陌生,所以如果这很愚蠢,请忍受。
我正在一个个人项目上,想找到一种在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,请注意某些代码无法正常运行。
答案 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')