Как 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в настоящее время не поддерживаются.

Другие вопросы по тегам