Można zrobić funkcję odliczania takiego:
import sys
import time
def countdown(t, step=1, msg='sleeping'): # in seconds
pad_str = ' ' * len('%d' % step)
for i in range(t, 0, -step):
print '%s for the next %d seconds %s\r' % (msg, i, pad_str),
sys.stdout.flush()
time.sleep(step)
print 'Done %s for %d seconds! %s' % (msg, t, pad_str)
Karetka powrót \r
i przecinek ,
zachowa drukiem w tej samej linii (unikanie jedną linię dla każdej wartości odliczania)
Wraz ze zmniejszaniem się liczby sekund, pad_str zapewni, że ostatnia linia zostanie zastąpiona spacjami, zamiast pozostawić ostatni znak (y) za końcem skracania.
Ostateczny wydruk zastępuje ostatni komunikat stanu zakończoną wiadomością i zwiększa linię wyjściową, więc istnieją dowody opóźnienia.
Dziękuję za wszystkie wspaniałe odpowiedzi. – user1681664
powiązane: [odliczanie przy użyciu pętli zdarzeń Tkinter lub Gtk lub Twisted lub Asyncio] (http://stackoverflow.com/a/14040516/4279) – jfs