进度条正在制作新行,希望它重置为开头

时间:2015-04-16 14:52:29

标签: python

我想在完成后重新显示一个进度条。这是代码。当你运行它时,你可以看到它每次都会换行。

import time
import sys
toolbar_width = 40
numbers = [1,2,4,5,6,7,8,9,10]
for number in numbers:

    for i in xrange(toolbar_width):
                time.sleep(0.1) # do real work here
                # update the bar
                sys.stdout.write("-")
                sys.stdout.flush()

    sys.stdout.write("\n")

2 个答案:

答案 0 :(得分:2)

完成后打印回车:

import time
import sys
toolbar_width = 40
numbers = [1,2,4,5,6,7,8,9,10]
for number in numbers:
    #print number

    for i in xrange(toolbar_width):
                time.sleep(0.1) # do real work here
                # update the bar
                sys.stdout.write("-")
                sys.stdout.flush()

    sys.stdout.write("\r")
    # ^^^^^^^^^^^^^^^^^^^^ <--- here!

这样,光标将返回到行的开头。

然而,这将是行的开头并保留之前的内容,正如@Kevin在下面评论。要删除该行,您可以使用\r包围的空格打印一条长行:第一行开始在给定行的开头打印,第二行将光标放回到开头。

sys.stdout.write("\r                       \r")

答案 1 :(得分:1)

sys.stdout.write("\r" + " " * toolbar_width + "\r")

而不是

sys.stdout.write("\n")

说明:

  • \r - 在行的开头
  • 返回
  • " " * toolbar_width - 填充大小为toolbar_width
  • 的空格
  • \r - 在行
  • 的开头再次返回