在 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")
我正在尝试制作一个显示进度量的百分比文本,但我正在尝试避免像这样打印百分比:
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,问题是一样的。
这是问题的截图:
编辑 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")