我正在尝试打印行,这些行总是替换
之前的行print "\r Getting hosts %i" % int(100/count*len(lines))
这应该会在一个动态行中生成Gettings hosts 0 - 100 %
,但它总是会打印一个新行。
答案 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()