Один из возможных способов сделать это - использовать символ возврата каретки «\ r», чтобы вернуть курсор в начало строки, чтобы вы могли перезаписать ранее написанные символы. Это позволяет создавать анимации, если она подходит для текущей строки. Например:
import time
def do_a_little_work():
time.sleep(0.1)
print "about to do work..."
icons = ["-", "/", "|", "\\"]
icon_idx = 0
while True:
do_a_little_work()
#todo: check if work is done, and break out of the loop.
print "\r" + icons[icon_idx],
icon_idx = (icon_idx+1)%len(icons)
print "\rdone."
Результат:
about to do work...
-
Который становится
about to do work...
/
Который становится
about to do work...
|
Который становится
about to do work...
\
и т.д ... В конце концов становится
about to do work...
done.
Вы можете использовать threading
запустить анимацию одновременно с обычным кодом.
from threading import Thread
import time
def do_the_work():
#execute your script here
work_thread = Thread(target=do_the_work)
print "Working..."
work_thread.start()
icons = ["-", "/", "|", "\\"]
icon_idx = 0
while work_thread.is_alive():
time.sleep(0.1)
print "\r" + icons[icon_idx],
icon_idx = (icon_idx+1)%len(icons)
print "\rdone"
У вас есть 'curses'? Это позволит вам сделать некоторые причудливые вещи с терминалом (хотя вы должны помнить, что имя библиотеки не является случайным ... вы * будете * говорить довольно некоторые проклятия при обучении/использовании). – Bakuriu