Как Pywikipedia управляет цветами в командной строке?
Я всегда думал, что в командной строке нет возможности форматирования, поскольку все, что я прочитал, говорит.
Тем не менее, я недавно обнаружил, что pywikipedia (платформа для python-бота для автоматического редактирования вики-стиля википедии) может выводить текст в командную строку (обычные окна cmd.exe
) в разные цвета!
Это синтаксис Python:
import wikipedia
wikipedia.output(u"\03{lightpurple}"+s+"\03{default}")
Вы должны использовать wikipedia.output()
(или же pywikibot.output()
) но не только print
,
Онлайн-хранилище Pywikipedia (около строки 7990) дает краткое объяснение:
text can contain special sequences to create colored output. These
consist of the escape character \03 and the color name in curly braces,
e. g. \03{lightpurple}. \03{default} resets the color.
Я думаю, что это, вероятно, связано с этой строкой:
ui.output(text, toStdout = toStdout)
Но я не могу найти ссылку на ui
учебный класс.
Так как же Пивикипедия управляет этим?
2 ответа
Я не знаю, можно ли использовать код ANSI в Windows.
Но в Python вы можете написать так:
>>> print "\033[0;32m"+ "Green" +"\033[0m"
Green
Я видел это здесь.
Я думаю, что это, вероятно, связано с этой строкой:
ui.output(text, toStdout = toStdout)
Но я не могу найти ссылку на класс пользовательского интерфейса.
Как Pywikibot управляет цветами в командной строке
Действительно это сложно.
Вы уже нашли цветовые коды, такие как \03{светло-голубой} и \03{по умолчанию}; все их можно найти здесь . Также есть функцияcolor_format()
который автоматически обрабатывает управляющую последовательность. класс имеет частный_print()
метод, который обрабатывает все цвета и делегирует аппаратную последовательностьencounter_color()
метод. Есть реализации для Windows и Linux.
Но вы правы, прямой ссылки на класс пользовательского интерфейса терминального интерфейса нет.
Есть функция
set_interface()
вbot
модуль, который назначает
UI
класс к
ui
пользовательский интерфейс, используемый Pywikibot.
'terminal'
модуль для
userinterfaces_terminal_interface
установлен внутри
config.py
который является файлом конфигурации Pywikibot, который может быть переопределен с помощью
user_config.py
. Существует также
buffer_interface
в основном используется тестами. Другие интерфейсы из более старой ветки, такие как
cgi
,
tkinter
,
wxpython
в настоящее время не поддерживаются.