在Python3中更新一行文本

在Python3中更新一行文本,python,Python,我想更新一行文本,这样我就不会有太多的输出行。查看安装程序以获取示例: 而不是 安装状态:1% 安装状态:2% 安装状态:3% 。。。我希望每次百分比变化时都更新同一行 我已经找到了这样做的方法(好吧,这实际上是在欺骗用户),但这有点糟糕,因为上面的所有行都消失了。我说的是导入“os”,然后执行“os.system(“clear”)” 有没有更好的办法 顺便说一句:我说的是每秒几百次的变化。安装程序只是一个例子。使用附件\r然后sys.stdout.flush() 要继续使用安装程序示例,请执

我想更新一行文本,这样我就不会有太多的输出行。查看安装程序以获取示例:

而不是

安装状态:1%

安装状态:2%

安装状态:3%

。。。我希望每次百分比变化时都更新同一行

我已经找到了这样做的方法(好吧,这实际上是在欺骗用户),但这有点糟糕,因为上面的所有行都消失了。我说的是导入“os”,然后执行“os.system(“clear”)”

有没有更好的办法


顺便说一句:我说的是每秒几百次的变化。安装程序只是一个例子。

使用附件
\r
然后
sys.stdout.flush()

要继续使用安装程序示例,请执行以下操作:

import sys
import time
for i in range(100):
    sys.stdout.write("\rInstallation Progress: %d percent" % i)
    time.sleep(.05)
    sys.stdout.flush()
快乐编码


编辑--我使用%表示完成的百分比。结果是占位符不完整。我道歉

使用附件
\r
然后
sys.stdout.flush()

要继续使用安装程序示例,请执行以下操作:

import sys
import time
for i in range(100):
    sys.stdout.write("\rInstallation Progress: %d percent" % i)
    time.sleep(.05)
    sys.stdout.flush()
快乐编码


编辑--我使用%表示完成的百分比。结果是占位符不完整。我道歉

这与python无关,但与输出到标准输出有关:您可以使用退格(
\b
)或回车(
\r
)字符操纵光标的位置。具体取决于您想要实现的目标,您将需要使用这些目标的一些组合。您可以看一个例子。

这与python无关,但与输出到标准输出有关:您可以使用退格(
\b
)或回车(
\r
)字符操纵光标的位置。具体取决于您想要实现的目标,您将需要使用这些目标的一些组合。您可以将其作为一个示例。

如果需要,您可以制作一个漂亮的动画:

import sys
import time

barWidth = 50 # you can play with this
def updateProgressBar(value):
    line = '\r%s%%[%s]' % ( str(value).rjust(3), '-' * int ((float(value)/100) * barWidth))  
    print line,
    sys.stdout.flush()

for i in range(1,101):
    updateProgressBar(i)
    time.sleep(0.05) # do the job here
这将为您提供以下格式的输出:

100%[--------------------------------------------------]

PS:对于Python 3,您可以使用
print(line,end='')
更改
print line,

如果需要,您可以制作一个漂亮的动画:

import sys
import time

barWidth = 50 # you can play with this
def updateProgressBar(value):
    line = '\r%s%%[%s]' % ( str(value).rjust(3), '-' * int ((float(value)/100) * barWidth))  
    print line,
    sys.stdout.flush()

for i in range(1,101):
    updateProgressBar(i)
    time.sleep(0.05) # do the job here
这将为您提供以下格式的输出:

100%[--------------------------------------------------]

PS:您可以使用Python 3的
print(line,end='')更改
print line,

Related:or Related:or我猜您这里有一个打字错误:
sys.stdout.write(“\r安装进度:%d%%I)
@Sait谢谢您的注意!我甚至没看到。结果表明,如果单独使用百分比符号,它将构成一个不完整的占位符,因此它抛出了一个错误。对不起D您可以使用:
%%
。例如:
打印“%d%%”%5
即可。很高兴我现在知道了!XDI猜想您在这里输入了一个错误:
sys.stdout.write(“\r安装进度:%d%%i)
@Sait感谢您的注意!我甚至没看到。结果表明,如果单独使用百分比符号,它将构成一个不完整的占位符,因此它抛出了一个错误。对不起D您可以使用:
%%
。例如:
打印“%d%%”%5
即可。很高兴我现在知道了!除息的