好的,我代表其他人问这个问题,但我也想知道它是否以及如何可能。
假设您有给定的代码行生成字符串
剩余时间:4
有什么办法可以在打印此字符串后编辑“4”的值并将其更改为“3”,然后在同一行上重新打印新字符串,以便剩余时间:4 替换为剩余时间: 3 不会导致打印新行。
我希望你能理解我尽力解释的问题。
好的,我代表其他人问这个问题,但我也想知道它是否以及如何可能。
假设您有给定的代码行生成字符串
剩余时间:4
有什么办法可以在打印此字符串后编辑“4”的值并将其更改为“3”,然后在同一行上重新打印新字符串,以便剩余时间:4 替换为剩余时间: 3 不会导致打印新行。
我希望你能理解我尽力解释的问题。
打印回车符 ( ),并通过添加到打印参数来\r
确保您的print
语句没有写入换行符。end=''
每次打印后,确保使用sys.stdout.flush()
. 例如:
import time
import sys
for i in range(4, 0, -1):
print('\rTime left:', i, end='')
sys.stdout.flush()
time.sleep(1)
在 Python 2.x where print
is a statement 而不是函数上,只需添加尾随逗号以防止换行:
import time
import sys
for i in range(4, 0, -1):
print '\rTime left:', i,
sys.stdout.flush()
time.sleep(1)
一种方法是打印退格转义字符 ( \b
),这会将文本光标向后移动一个字符;但是,您有责任在之后打印一些内容来替换文本。
例如,如果终端中的当前文本是Time left: 4
print "\b"
,用户将看到没有任何变化。但是,如果您 print "\b5"
,它将用 5 替换它。
3>> for i in range(5, 0, -1):
... print('\rTime left: {} '.format(i), end='', flush=True)
... time.sleep(1)
...
Time left: 1
(注意:输出实际上会在您的系统上发生变化:P)