好的,我代表别人问这个问题,但我也想知道是否以及如何做到这一点。
假设您有一行代码生成字符串
剩余时间:4
有什么办法可以在打印完这个字符串之后再编辑“4”的值并将其改为“3”,然后在同一行重新打印新字符串,这样剩下的时间:4被替换剩余时间:3,不会打印新行。
我希望你理解我尽力解释的问题。
答案 0 :(得分:6)
打印回车符(\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中,print
是一个语句而不是一个函数,只需添加一个尾随逗号来阻止换行:
import time
import sys
for i in range(4, 0, -1):
print '\rTime left:', i,
sys.stdout.flush()
time.sleep(1)
答案 1 :(得分:2)
一种方法是打印退格转义字符(\b
),它会将文本光标移回一个字符;但是,您有责任在之后打印来替换文本。
例如,如果终端中的当前文本为Time left: 4
并且您打印"\b"
,则用户将看不到任何更改。但是,如果您打印"\b5"
,则会将其替换为5。
答案 2 :(得分:1)
3>> for i in range(5, 0, -1):
... print('\rTime left: {} '.format(i), end='', flush=True)
... time.sleep(1)
...
Time left: 1
(注意:系统上的输出实际上会发生变化:P)