Динамическая терминальная печать с Python

Определенные приложения как hellanzb имеют способ распечатать к терминалу с появлением динамично обновляющих данных, отчасти как вершина ().

Каков лучший метод в Python для того, чтобы сделать это? Я читал при входе и проклятиях, но не знаю, что использовать. Я создаю переопределение вершины. Если у Вас есть какие-либо другие предложения, я открыт для них также.

38
задан Recursion 23 January 2010 в 06:33
поделиться

4 ответа

Самый простой способ, если вам нужно только обновить одну строку (например, создание бара выполнения), является использование '\ 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 для разных частей экрана, ввода текстовых ввода и поддержку мыши.

54
ответ дан 27 November 2019 в 03:30
поделиться

звучит как работа для проклятий . Это наиболее часто используемая библиотека для макета и управления экранами в режиме текстового режима. Python имеет очень хорошую поддержку проклятиями, включая поддержку панелей:

3
ответ дан 27 November 2019 в 03:30
поделиться

Когда я делаю это в сценариях Shell на Unix, я склонен просто использовать четкую программу. Вы можете использовать модуль подпроцесса Python для его выполнения. Это, по крайней мере, достанет вам то, что вы ищете быстро.

0
ответ дан 27 November 2019 в 03:30
поделиться
[ignacio@localhost ~]$ ldd /usr/bin/top | grep curses
        libncursesw.so.5 => /lib64/libncursesw.so.5 (0x0000003ae1400000)

проклинает .

-1
ответ дан 27 November 2019 в 03:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: