所以我有这段代码,如果您知道我的意思,我不知道如何仅通过覆盖先前的输出来仅在一行中运行它。这是代码:
import time
signs = ["|", "/", "-", "\\"]
while True:
for i in range(4):
print("\r" + signs[i].format(i))
time.sleep(1)
如果您能帮助我,我将非常高兴
答案 0 :(得分:3)
您必须在打印语句中添加end='\r'
,所以这个小的更改应该可以完成您想要的工作:
import time
signs = ["|", "/", "-", "\\"]
while True:
for i in range(4):
print(signs[i].format(i), end='\r')
time.sleep(1)
默认情况下,它是\n
,所以下一行符号,但是使用\r
(回车),当前行将被下一个输出覆盖。
尽管如果前一个输出比后一个输出长,那么它可能会引起问题,但是它只会覆盖新输出的字符,其余的仍然保留。在这种情况下,可以帮助在输出末尾添加一些空格以填补序列长度的差异。
通常,行为取决于所使用的 output ,即 Shell,Idle,写入文件,Eclipse,PyCharm 等。某些输出Shell可能不支持此命令。
答案 1 :(得分:1)
这可以做到:
from __future__ import print_function # only needed for python 2.x
import time, sys
signs = ["|", "/", "-", "\\"]
while True:
for i in range(4):
print("\r" + signs[i].format(i), end="", flush=True)
#print("\r" + signs[i].format(i), end="") # use this instead of above in python 2.x
#sys.stdout.flush() # only needed for python 2.x
time.sleep(1)