如何在打印后更改字符串

时间:2013-09-11 15:46:45

标签: python python-3.x

好的,我代表别人问这个问题,但我也想知道是否以及如何做到这一点。

假设您有一行代码生成字符串

  

剩余时间:4

有什么办法可以在打印完这个字符串之后再编辑“4”的值并将其改为“3”,然后在同一行重新打印新字符串,这样剩下的时间:4被替换剩余时间:3,不会打印新行。

我希望你理解我尽力解释的问题。

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)