Определенные приложения как hellanzb имеют способ распечатать к терминалу с появлением динамично обновляющих данных, отчасти как вершина ().
Каков лучший метод в Python для того, чтобы сделать это? Я читал при входе и проклятиях, но не знаю, что использовать. Я создаю переопределение вершины. Если у Вас есть какие-либо другие предложения, я открыт для них также.
Самый простой способ, если вам нужно только обновить одну строку (например, создание бара выполнения), является использование '\ R'
(возвращение каретки ) и SYSSTDOUT
:
import sys
import time
for i in range(10):
sys.stdout.write("\r{0}>".format("="*i))
sys.stdout.flush()
time.sleep(0.5)
Если вам нужна правильная консоль UI, которая поддерживает перемещение указателя и т. Д., Используйте модуль Curses
из стандартной библиотеки:
import time
import curses
def pbar(window):
for i in range(10):
window.addstr(10, 10, "[" + ("=" * i) + ">" + (" " * (10 - i )) + "]")
window.refresh()
time.sleep(0.5)
curses.wrapper(pbar)
Целесообразно использовать функцию Curses.Wrapper
, чтобы вызвать основную функцию, она позаботится об очистке терминала в случае ошибки, поэтому он не будет в неразборчивом состоянии.
Если вы создаете более сложный пользовательский интерфейс, вы можете создавать несколько Windows для разных частей экрана, ввода текстовых ввода и поддержку мыши.
звучит как работа для проклятий
. Это наиболее часто используемая библиотека для макета и управления экранами в режиме текстового режима. Python имеет очень хорошую поддержку проклятиями, включая поддержку панелей:
Когда я делаю это в сценариях Shell на Unix, я склонен просто использовать четкую программу. Вы можете использовать модуль подпроцесса Python для его выполнения. Это, по крайней мере, достанет вам то, что вы ищете быстро.
[ignacio@localhost ~]$ ldd /usr/bin/top | grep curses
libncursesw.so.5 => /lib64/libncursesw.so.5 (0x0000003ae1400000)