在Python 2.7中替换打印语句

4
如何在Python 2.7中替换打印语句,例如:
for i in range(100):
    print i,"% Completed"

#Result Must Be:
>>> 1 % Completed 

1 必须被 2 等替换。但不要在不同行或同一行上添加。

我尝试搜索相关解决方案,发现如下:

from __future__ import print_function
print("i: "+str(i),end="\r")

但它们会导致被附加的打印语句。我的print_function有任何修改吗,还是有其他解决方案?


不确定您想要什么结果。您是否希望循环中的每个语句都在单行中打印? - Rohit Jain
我希望打印的语句被新语句替换,而不是在新行或附加。 - Craziest Hacker
例如,1 % Completed 应该变成 2 % Completed,而不是 1 % Completed 2 % Completed - Craziest Hacker
你不能只是在打印语句中用(i+1)替换i吗? - Tom Karzes
@TomKarzes 我不想要多个打印行或语句,我想要替换输出。 - Craziest Hacker
如果您在shell中运行脚本,您的代码可以正常工作,下面答案中的代码也是如此。但是,在IDE中它将无法工作(好吧,可能不是所有的IDE都是这样),并且显然在您的IDE中也不能工作。 - SiHa
2个回答

4
你是否需要像这样的东西:
>>> import sys, time
>>> for i in range(100):
...     time.sleep(0.1)
...     sys.stdout.write('%d %% Completed \r' % (i,))
...     sys.stdout.flush()

抱歉,但我想要替换输出,而不是追加。 - Craziest Hacker
1
@CraziestHacker 你运行了吗? - Rohit Jain
是的,就像您发布的那样。 - Craziest Hacker
好的,它在命令行上可以运行,但在集成开发环境中无法运行。感谢您提供的解决方案。 - Craziest Hacker
如何将“100%完成”更改为“已完成:100%”,而不是“100%完成”。 - TheCrazyProfessor
显示剩余7条评论

2

请看下面:

from __future__ import print_function

for i in range(100):
    print('{0}% Completed\r'.format(i), end='')
print('100% Completed')

如果你想看到它运行几秒钟,请设置更高的范围。


抱歉,我想要替换输出,而不是追加。 - Craziest Hacker
1
@CraziestHacker,我的代码确实替换了输出,你在说什么? - timgeb
所以,你的回答是无关的,因为我的问题明确说明了要替换输出语句,而不是追加它。 - Craziest Hacker
@CraziestHacker 输出被替换了,而不是被添加。你做错了什么。 - timgeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接