У меня есть сценарий Python, и я хочу, чтобы он отображал все большее число от 0 до 100% в терминале. Я знаю, как печатать числа на терминале, но как я могу их переписать, поэтому 0 превращается в 1, 1 в 2 и так далее до 100?Как переписать вывод в терминал
ответ
Печать возврата каретки (\r
) без перехода на новую строку сбрасывает курсор в начало строки, делая следующую печать перезаписана, что уже напечатано:
import time
import sys
for i in range(100):
print i,
sys.stdout.flush()
time.sleep(1)
print "\r",
Это не очищает линию, так что если вы пытаетесь, скажем, печатать уменьшающиеся числа, используя эти методы, вы увидите оставшийся текст из предыдущих отпечатков. Вы можете обойти это, заполнив свой вывод пробелами или используя некоторые контрольные коды в других ответах.
Этот рецепт here должен оказаться полезным. С помощью этого модуля в дц, следующий код делает то, что вы хотите:
from tc import TerminalController
from time import sleep
import sys
term = TerminalController()
for i in range(10):
sys.stdout.write("%3d" % i)
sys.stdout.flush()
sleep(2)
sys.stdout.write(term.BOL + term.CLEAR_EOL)
Рецепт использует terminfo
, чтобы получить информацию о терминале и работает в Linux и OS X для ряда терминалов. Однако он не работает в Windows. (Спасибо piquadrat для тестирования, согласно комментарию ниже).
Редактировать: рецепт также дает возможности для использования цветов и переписывания части линии. Он также имеет готовый индикатор выполнения текста.
в соответствии с просьбой, я попробовал ваш код на Windows (Windows 7, Python 2.7). Выход «0 1 2 3 4 5 6 7 8 9». –
@piquadrat: Большое спасибо. –
Это работает, но это слишком много. – vy32
на основе this answer, но без терминального контроллера:
import time
import sys
for i in range(100):
sys.stdout.write("Downloading ... %s%%\r" % (i))
sys.stdout.flush()
time.sleep(1)
Испытано на терминале GNOME (Linux) и Windows, консоли.
Совет. Не используйте этот пример в редакторе IDLE.
Использование blessings package - очистить экран (прозрачный/ЦБС) и введите:
import sys
from blessings import Terminal
from time import sleep # <- boy, does this sound tempting a.t.m.
term = Terminal()
for i in range(6):
with term.location(term.width - 3, term.height - 3):
print('{}'.format(i))
sleep(2)
if (i == 3):
print('what was I doing, again?')
print('done')
Чтобы установить его из Cheeseshop, просто ...
pip install blessings
- 1. Терминал - Как переписать много строк?
- 2. вывод на новый терминал
- 3. перенаправить вывод на терминал
- 4. Неверный вывод C Терминал
- 5. Изменить/переписать значение в package.json через терминал
- 6. Как переписать вывод терминала программы
- 7. Переписать вывод страницы ASP.NET
- 8. Postgres - как мне вернуть вывод на терминал?
- 9. вывод вывода на терминал в pexpect - Python
- 10. mySQL в сервере Терминал, необходимо увидеть вывод
- 11. Linux терминал: красиво отформатированный -h вывод
- 12. вывод на csv аналогичным образом выводит вывод на терминал?
- 13. Вход/вывод через терминал с вопросами Codejam
- 14. Консоль Rails предотвращает вывод назначения на терминал
- 15. Терминал на студии Android отключает вывод
- 16. Vim: Warning: вывод не на терминал
- 17. Python, как отправить вывод в файл и терминал
- 18. Как распечатать цветной вывод на терминал в Python?
- 19. Как вывести вывод subprocess.call() в терминал и файл?
- 20. Рабочий процесс Vim - отладка и вывод Терминал
- 21. Получить вывод на терминал после команды быстрого
- 22. var_dump() вывод shortned - phpunit или мой терминал?
- 23. Как переписать вывод Seq для цикла в выход потока?
- 24. Как получить терминал шпатлевки, чтобы показать весь вывод команды?
- 25. Как напечатать некоторый вывод на терминал, а также файл
- 26. Получить вывод на терминал после системы() исполнение в R
- 27. Труба терминал?
- 28. Перенаправить вывод сценария в файл журнала ИЛИ терминал по запросу
- 29. subprocess.Popen: клонирование стандартного вывод и стандартный вывод как на терминал и переменные
- 30. Попытка получить узел-WebKit консольного вывод отформатированный на терминал
эта платформа независима? –
@klez: возможно, не для всех терминалов. Он работает на пишущих машинах. Эта платформа достаточно независима для вас? :) –
На двух платформах, находящихся в моем распоряжении (Linux и Windows), он работает. –