首先,我不正在寻找如何使用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)
其中输出应该是字符串,只有改变的秒数...希望有人可以帮助我。
答案 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
必须为bytes
(b'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'
。