无法用\ r \ n替换打印线

时间:2014-01-16 12:24:12

标签: python string output

我正在尝试打印行,这些行总是替换

之前的行
print "\r Getting hosts %i" % int(100/count*len(lines))

这应该会在一个动态行中生成Gettings hosts 0 - 100 %,但它总是会打印一个新行。

2 个答案:

答案 0 :(得分:2)

print隐含地在字符串后添加换行符。

为了防止这种情况,在Python 2.x中,在print语句的末尾添加,

print "\r Getting hosts %i" % int(100/count*len(lines)),

在Python 3.x中,使用以下add end=''参数:

print("\r Getting hosts %i" % int(100/count*len(lines)), end='')

或者使用sys.stdout.write(适用于Python 2.x,Python 3.x):

import sys

....

sys.stdout.write("\r Getting hosts %i" % int(100/count*len(lines)))

标准输出通常是行缓冲的。您可能需要在每次写入时刷新流。

sys.stdout.flush()

100/count*len(lines)似乎很奇怪。也许你的意思是跟随?

100 * count / len(lines)

答案 1 :(得分:0)

使用sys.stdout.flush()删除行

sys.stdout.write("\r Getting hosts %i" % int(100/count*len(lines))) # or print >> sys.stdout, "\r Getting hosts %i" % int(100/count*len(lines))
sys.stdout.flush()

e.g。

for i in range(100):
    time.sleep(0.1)
    sys.stdout.write("\r Getting hosts %i" % i)
    sys.stdout.flush()