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

Python符号加载,覆盖控制台行,python,ascii,loading,Python,Ascii,Loading,所以我有这段代码,我不知道如何只在一行中运行它,如果你知道我的意思的话,只需覆盖前面的输出。代码如下: import time signs = ["|", "/", "-", "\\"] while True: for i in range(4): print("\r" + signs[i].format(i)) time.sleep(1) 如果您能帮助我,我将非常高兴您必须将end='\r'添加到您的打印语句中,因此这一小小的更改应该可以满足您的

所以我有这段代码,我不知道如何只在一行中运行它,如果你知道我的意思的话,只需覆盖前面的输出。代码如下:

import time

signs = ["|", "/", "-", "\\"]
while True:
    for i in range(4):
         print("\r" + signs[i].format(i))
         time.sleep(1)
如果您能帮助我,我将非常高兴

您必须将end='\r'添加到您的打印语句中,因此这一小小的更改应该可以满足您的要求:

导入时间 符号=[|,/,-,\\] 尽管如此: 对于范围4中的i: 打印符号[i]。格式i,结束='\r' 时间1 默认情况下,它是\n所以下一行符号,但使用回车符,\r当前行将被下一个输出覆盖。 如果上一个输出比下一个输出长,那么它只覆盖新输出中的字符数,其余的则保留。在这种情况下,可以在输出的末尾添加一些空格来填充序列长度的差异。通常,行为取决于所使用的输出,即Shell、Idle、write to file、Eclipse、PyCharm等。某些输出Shell可能不支持此命令。

这样做:

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)

@弗雷德拉尔森:是的,在我看来它们是等价的。@stanisławsłowiński你是在贝壳里测试它吗?对我来说,它在Jupyter很好用,shell也应该很好用。可能是一些输出,如日志,不支持覆盖。Im使用PycharmIt似乎PyCharm有问题:问题解决了,因为某些原因,它只在终端中工作。那对我来说太好了。谢谢你的帮助!可能与Python 2.7中的print_函数重复,或者我在Python 2.7中发现了该函数。@FredLarson在本例中,您需要导入sys,然后再导入sys.stdout.flush。。。谢谢你指出这一点。我相应地更新了我的答案!