我正在编写一个脚本,它将打印一个计时器,并试图重用这样的函数:
def timer(m,x):
for i in range(1,x):
sys.stdout.write('\r%s\b%d' % (m,i))
sys.stdout.flush()
sleep(1)
sys.stdout.write('\r \b')
现在,我希望显示计时器的脚本部分是这样的:
host_alive = "ping -c1 myServer"
cmdStat, cmdOut = commands.getstatusoutput(host_alive)
while True:
if cmdStat != 0:
(cmdStat,cmdOut) = commands.getstatusoutput(host_alive)
print "Still NOT ready!!"
else:
break
如何在不指定range()
的情况下打印计时器?有没有解决方法?
干杯!!
答案 0 :(得分:2)
def timer(m):
i = 0
while True:
sys.stdout.write('\r%s\b%d' % (m,i))
sys.stdout.flush()
sleep(1)
sys.stdout.write('\r \b')
i = i + 1
答案 1 :(得分:2)
首先,commands
模块已弃用,并由subprocess
模块替换。
其次,要在python中表示无穷大,您可以使用float('inf')
。它象征着你指的是无限。
def timer(m):
i = 0
while i<float('inf'): #this is symbolic and in essence similar to while True
sys.stdout.write('\r%s\b%d' % (m,i))
sys.stdout.flush()
sleep(1)
sys.stdout.write('\r \b')
i += 1
答案 2 :(得分:1)
while循环可能是更好的选择。例如:
def timer(max):
while counter > 0:
print '%d seconds remain' % max
sleep(1)
max -= 1