替换shell中打印的以前的文本 - Windows

时间:2016-08-03 16:11:54

标签: python windows-console

我一直在研究这个问题,似乎有可能,但在Windows上是不可能的。

我正在尝试创建一个加载栏,它将打印'正在加载',然后是'正在加载','正在加载......'等等。

此代码似乎适用于Linux但不适用于Windows(Python 3.5):

x = 0
for x in range (0,5):
    #x = x + 1
    b = "Loading" + "." * x
    print (b, end="\r")
    time.sleep(1)

我如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

问题在于缓冲:脚本结束时,所有内容都会立即出现。你可以force Python >3.3 to flush after each print output

import time
print("Loading", end="", flush=True)
for x in range(0,5):
  print(".", end="", flush=True)
  time.sleep(.2)

当然,加载栏可能看起来很酷,但是只是浪费时间睡觉的假装不会让用户满意。如果您的计划确实在开展业务,请查看threadingsubprocess

<小时/> 你最初的想法对我有用(Win7 64位上的Python 3.4):

import time
for x in range(0,5):
  print("Loading" + "."*x, end="\r", flush=True)
  time.sleep(.2)