删除最后写入的行并将其替换为python

时间:2017-02-18 07:36:56

标签: python

为了创建一个按现在显示lode的进度条

背后的想法是擦除线条,然后重写它,使它看起来像当前的前提。

我试着这样做:

import time
---some kind of loop---:
    ... downloading stuff ...
    b = str((prhelp / 576)*100)
    print(b + "%", end="\r")
    time.sleep(1)
    prhelp = prhelp + 1

但它只是不打印任何东西

此外,我想知道如何在点后打印一个只有3位数的数字 - 12.345678 - > 12.345

所以我的程序不会打印太长的

2 个答案:

答案 0 :(得分:0)

它是因为当您print时,您给参数end是将添加到结尾的字符串。默认情况下,它是\n。你给了\r。这个字符的含义是删除当前行。这就是为什么它没有打印出来的东西......

如果您希望它能够正常工作,请将其替换为:

print(b + "%", end="\r")

由:

print(b + "%")

我猜你想要的是:

import time
print('Hello', end='')
time.sleep(1)
print('\rworld!')

此代码将打印Hello,等待1秒钟,然后将Hello替换为world!

答案 1 :(得分:-1)

最后我只需要这样做:

import time
b = str(round((prhelp / 576) * 100,3))
print('\r',end = "")
print(b + "%",end = "")
time.sleep(0.01)
prhelp = prhelp + 1

通过

print('\r',end = "")

我删除了最后一行,并为下一个数字写作做好准备。

感谢所有帮助者