Python符号加载,覆盖控制台行

时间:2018-11-16 21:18:39

标签: python ascii loading

所以我有这段代码,如果您知道我的意思,我不知道如何仅通过覆盖先前的输出来仅在一行中运行它。这是代码:

import time

signs = ["|", "/", "-", "\\"]
while True:
    for i in range(4):
         print("\r" + signs[i].format(i))
         time.sleep(1)

如果您能帮助我,我将非常高兴

2 个答案:

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