Python sys.stdout.flush(),在它之前刷新所有东西

时间:2013-03-22 11:16:08

标签: python

我是python的新手,我有一个程序女巫是命令行中显示百分比的王者:

sys.stdout.write("[")

    for x in xrange(1,int(number)):

        percentage = (x*100)/int(number)
        numberfile.write(str(x)+'\n') 

        sys.stdout.write("\r%d%%" %percentage)
        sys.stdout.flush()

    sys.stdout.write("][Done]")

但我的问题是flush()函数,在它之前删除所有输出并且输出就是这样的:

  

100%] [完成]

我如何将其改为

  

[100%] [完成]

2 个答案:

答案 0 :(得分:1)

问题不是同花顺而是" \ r"在

sys.stdout.write("\r%d%%" %percentage)

也许你想要

sys.stdout.write("\r[%d%%" %percentage)

答案 1 :(得分:0)

    sys.stdout.write("\r%d%%" %percentage)

应该是

    sys.stdout.write("\r[%d%%]" %percentage)

为了避免有趣的展示:

[伪代码]

for x in xrange(1,int(number)):

    percentage = (x*100)/int(number)
    numberfile.write(str(x)+'\n') 

    lastP = percentage
    if (percentage  > lastP)
        sys.stdout.write("[%d%%]" %percentage);
        sys.stdout.flush();
        lastP = percentage