«Кстати ... Как обновлять его каждый раз, чтобы он печатал mi в одном месте, просто меняйте номер».
Это очень сложная тема. Что zack предложил (вывод управляющих кодов консоли) - это один из способов достижения этого.
Вы можете использовать (n) проклятия, но это работает в основном на * nixes.
В Windows (и здесь идет интересная часть), которая редко упоминается (я не могу понять, почему), вы можете использовать привязки Python к WinAPI ( http://sourceforge.net/projects/pywin32/ также с ActivePython по умолчанию) - это не так сложно и работает хорошо. Вот небольшой пример:
import win32console, time
output_handle = win32console.GetStdHandle( win32console.STD_OUTPUT_HANDLE )
info = output_handle.GetConsoleScreenBufferInfo()
pos = info["CursorPosition"]
for i in "\\|/-\\|/-":
output_handle.WriteConsoleOutputCharacter( i, pos )
time.sleep( 1 )
Или, если вы хотите использовать print
(инструкция или функция, без разницы):
import win32console, time
output_handle = win32console.GetStdHandle( win32console.STD_OUTPUT_HANDLE )
info = output_handle.GetConsoleScreenBufferInfo()
pos = info["CursorPosition"]
for i in "\\|/-\\|/-":
print i
output_handle.SetConsoleCursorPosition( pos )
time.sleep( 1 )
win32console
модуль позволяет вам делать еще много интересного с помощью консоли Windows ... Я не большой поклонник WinAPI, но недавно я понял, что по крайней мере половина моей антипатии к ней была вызвана написанием кода WinAPI в C-pythonic bindings намного проще использование.
Все остальные ответы велики и питоничны, но ... Что делать, если я хотел напечатать на предыдущей строке? Или написать многострочный текст, чем очистить его и снова написать те же строки? Мое решение делает это возможным.