很长时间以来,我一直想知道如何在 python 中清除 print("example") 之类的东西,但我似乎无法找到或想出任何东西。
print("Hey")
>Hey
现在我需要清除它,并写一些新的文本。
print("How is your day?")
它会打印。
嘿
>How is your day?
但是我想清除“嘿”,所以用户不应该同时看两个,它看起来有点乱。
很长时间以来,我一直想知道如何在 python 中清除 print("example") 之类的东西,但我似乎无法找到或想出任何东西。
print("Hey")
>Hey
现在我需要清除它,并写一些新的文本。
print("How is your day?")
它会打印。
嘿
>How is your day?
但是我想清除“嘿”,所以用户不应该同时看两个,它看起来有点乱。
import os
os.system('cls')
或者os.system('clear')
在 unix(mac 和 linux)上。如果您也不希望向上滚动,则可以执行以下操作:
os.system("printf '\033c'")
也应该摆脱向后滚动。适用于所有系统的东西:
import os
os.system('cls' if os.name == 'nt' else "printf '\033c'")
我认为这是你想要做的:
将光标向上移动一行并删除该行
这可以像使用下面的代码一样完成
import sys
import time
def delete_last_line():
"Use this function to delete the last line in the STDOUT"
#cursor up one line
sys.stdout.write('\x1b[1A')
#delete last line
sys.stdout.write('\x1b[2K')
########## FOR DEMO ################
if __name__ == "__main__":
print("hello")
print("this line will be delete after 2 seconds")
time.sleep(2)
delete_last_line()
####################################
好吧,我有一个临时的方法:
print("Hey", end="")
for i in range(4):
print('\b', end = '')
print("How is your day?")
@Aniket Navlur
为了删除多行,对 ' 的答案进行了少量添加:
def delete_multiple_lines(n=1):
"""Delete the last line in the STDOUT."""
for _ in range(n):
sys.stdout.write("\x1b[1A") # cursor up one line
sys.stdout.write("\x1b[2K") # delete the last line
转义字符\r
(回车),意思是“从这一行的开头开始打印”。但是一些操作系统将其用作“换行符”。以下将在 Linux 中工作:
import time
import sys
#first text
print('Hey.', end="")
#flush stdout
sys.stdout.flush()
#wait a second
time.sleep(1)
#write a carriage return and new text
print('\rHow is your day?')