在 Python Shell 中在当前行上打印

Print over Current Line in Python Shell

我正在尝试制作一个显示进度量的百分比文本,但我正在尝试避免像这样打印百分比:

Progress: 10% Progress: 11% Progress: 12% Progress: 13%

如何擦除和覆盖当前行?我试过使用 \r 和 \b 字符,但似乎都不起作用。我之前发现的每一件事都是针对 Python 2 或 Unix,所以我什至不确定哪一个是问题所在(即使是其中一个),因为我没有使用任何一个。有谁知道我如何用 Python 3 运行 Windows 7 做到这一点?这是我目前无法使用的代码,但我已经尝试了很多其他方法。

print('Progress: {}%'.format(solutions//possibleSolutions),flush=True,end="\r")

编辑:

如果我从命令提示符下执行程序,这不是问题,所以我认为 windows 不是问题。我尝试将 Python 从我之前使用的 (3.4.1) 更新到最新的 v3.4.3,问题是一样的。

这是问题的截图: 这是我在截取问题截图时所能做的最好的事情。似乎每次我将光标向左移动(通过 Progress:'s 之一)时,文本和光标之间的灰色区域都会变大

编辑 2:问题是 IDLE 不支持 ASCII 控制码。解决方案:使用不同的 IDE.

您可以像这样创建一个名为 Printer 的新 class:

class Printer():
    def __init__(self, data):
        sys.stdout.write("\r\x1b[K"+data.__str__())
        sys.stdout.flush()

然后,假设您要打印 for 循环的进度:

for i in range(0, 100):
        p = i * 100
        output = "%d%% of the for loop completed" % p
        Printer(output)

您可以使用打印:

print('Progress: {}%'.format(solutions),flush=True,end="\r")