在Python Shell中打印当前行

时间:2015-07-05 22:36:53

标签: python shell python-3.x console

我试图制作一个显示进度金额的百分比文字,但我试图避免像这样打印出百分比:

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

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

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

编辑:

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

下面是问题的截图: 这是拍摄问题截图时我能做的最好的事情。看起来好像每次我将光标向左移动(通过其中一个进度:' s),文本和光标之间的灰色区域变大了

编辑2:问题是IDLE不支持ASCII控制代码。解决方案:使用其他IDE。

2 个答案:

答案 0 :(得分:1)

您可以使用print:

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

答案 1 :(得分:-1)

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

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)