如何在没有回车的情况下在Python 3.3.3中打印?

时间:2014-01-01 01:56:53

标签: python string printing string-formatting python-3.3

首先,我正在寻找如何使用print(some_stuff, end="")在同一行中进行打印。

在Python 2.7中,您可以输入:

while True:
for i in ["/","-","|","\\","|"]:
    print "%s\r" % i,

它会在相同的行中打印出SAME中的那5个字符,看起来就像你有一个酒吧旋转(实际上你可以尝试一下)。 问题是,我不能在Python 3.3中做同样的事情,我已经尝试了几件事。 我的具体应用是倒数计时器...代码是这样的:

import time
t = 120
while t > 0:
    t -= 1
    print("Time left till next update: %d seconds" % t)
    time.sleep(1)

其中输出应该是字符串,只有改变的秒数...希望有人可以帮助我。

2 个答案:

答案 0 :(得分:9)

您使用end='\r'作为关键字参数:

print("Time left till next update: %d seconds" % t, end='\r')

end的默认值为'\n',但您可以指定自己的。{/ p>

答案 1 :(得分:0)

您还可以尝试较低级别: os.write(fd, data) fd=1上的sys.stdin 请注意,data必须为bytesb'whatever data')。

import os, time
os.write(1, b'Time left till next update: 120 seconds'+b'\b'*8)
t=120
while t>0:
    time.sleep(1)
    t -= 1
    os.write(1, b'\b'*3+str(t).zfill(3).encode())
print()

它在终端中正常工作,但Python IDLE忽略'\r''\b'