【发布时间】:2014-10-27 01:16:22
【问题描述】:
我有一个长时间运行的脚本,它循环数据库中的行。每隔一段时间,我希望它打印处理了多少行,但每次都不需要创建新行。这基本上就是我所拥有的:
import sys
mystr = "{} rows complete\r"
for i in range(0, 100):
if i % 10 == 0:
sys.stdout.write(mystr.format(i))
sys.stdout.flush()
当我运行它时(在 Python 2.7.5 64 位 Windows 上)我得到:
0 rows complete
10 rows complete
20 rows complete
...
100 rows complete
谁能想到为什么回车不起作用?我在这里看到了一些关于 Python 和 \r 的类似问题,但所有答案都说包括 sys.stdout.flush(),我有。
【问题讨论】:
-
这是在 Windows 上执行的吗?
-
是的,它在 Windows 上。
-
在 Python 2.7.7 和 3.3 上为我工作(尽管调用
time.sleep()有助于查看前面的行。不同之处可能是我运行的是 32 位版本,或者0.0.2 版本差异,或者可能是您运行它的方式:您是如何运行脚本的?我从 powershell 和 cmd.exe 都尝试过,它对我来说都适用。 -
如果从 Powershell ISE 运行,它确实会出错。您是否使用 Powershell ISE 来运行您的脚本?
-
啊,你知道什么——我是从我的文本编辑器(Sublime Text)的控制台运行它的。当我通过 cmd.exe 运行它时,它运行良好!感谢您为我指明正确的方向。