Как вывести цветной текст на терминал в Python? Какой символ Unicode лучше всего представляет сплошной блок?
python
unicode
terminal
ansi-colors
aboSamoor
источник
источник
█
единственная проблема в том, что он расширен ASCII, возможно, вы могли бы заставить его работать, используяhttp://stackoverflow.com/questions/8465226/using-extended-ascii-codes-with-python
Ответы:
Это в некоторой степени зависит от того, на какой платформе вы находитесь. Наиболее распространенный способ сделать это - распечатать escape-последовательности ANSI. Для простого примера, вот код Python из скриптов сборки Blender :
Чтобы использовать такой код, вы можете сделать что-то вроде
или с Python3.6 +:
Это будет работать на Unix, включая OS X, Linux и Windows (при условии, что вы используете ANSICON , или в Windows 10, если вы включаете эмуляцию VT100 ). Есть ANSI коды для установки цвета, перемещения курсора и многое другое.
Если вы собираетесь усложниться с этим (и это звучит так, как будто вы пишете игру), вам следует заглянуть в модуль «curses», который обрабатывает многие сложные части этого для вас. Python Проклятие HOWTO является хорошим введением.
Если вы не используете расширенный ASCII (то есть не на ПК), вы застряли с символами ascii ниже 127, и «#» или «@», вероятно, - лучшая ставка для блока. Если вы можете убедиться, что ваш терминал использует расширенный набор символов IBM ascii , у вас есть еще много вариантов. Символы 176, 177, 178 и 219 являются «блочными персонажами».
Некоторые современные текстовые программы, такие как «Dwarf Fortress», эмулируют текстовый режим в графическом режиме и используют изображения классического шрифта для ПК. Вы можете найти некоторые из этих растровых изображений, которые вы можете использовать в Dwarf Fortress Wiki ( пользовательские наборы плиток ).
демонстрационном конкурсе в текстовом режиме больше ресурсов для работы с графикой в текстовом режиме.
Хм .. Я думаю, что немного увлекся этим ответом. Хотя я планирую эпическую текстовую приключенческую игру. Удачи с вашим цветным текстом!
источник
tput
, например, так как это приводит к более переносимому коду.disable
- когда вы передаете вывод в файл; в то время как подобные инструментыcat
могут поддерживать цвета, обычно лучше не печатать информацию о цвете в файлы.import ctypes;
kernel32 = ctypes.WinDLL('kernel32');
hStdOut = kernel32.GetStdHandle(-11);
mode = ctypes.c_ulong();
kernel32.GetConsoleMode(hStdOut, ctypes.byref(mode));
mode.value |= 4;
kernel32.SetConsoleMode(hStdOut, mode)
.Я удивлен, что никто не упомянул модуль Python termcolor . Использование довольно просто:
Или в Python 3:
Однако он может быть недостаточно сложным для программирования игр и «цветных блоков», которые вы хотите сделать ...
источник
termcolor.COLORS
дает вам список цветовos.system('color')
Сначала запустите Windows , затем начнут работать escape-последовательности ANSI.Ответ Колорама для всех кроссплатформенных раскрасок в Python.
Пример экрана Python 3.6:
источник
<b>bold</b>
) для добавления стиля к терминальному текстуНапечатайте строку, которая начинает цвет / стиль, затем строку, а затем завершите изменение цвета / стиля
'\x1b[0m'
:Получите таблицу параметров формата для текста оболочки со следующим кодом:
Пример «свет в темноте» (завершено)
Пример темного света (частичный)
источник
Определите строку, начинающую цвет, и строку, оканчивающую цвет, затем напечатайте текст с начальной строкой впереди и конечной строкой в конце.
Это производит следующее
bash
, вurxvt
с цветовой гаммой Zenburn стиля:Экспериментально мы можем получить больше цветов:
Примечание:
\33[5m
и\33[6m
мигают.Таким образом, мы можем создать полноцветную коллекцию:
Вот код для генерации теста:
источник
\33[0m
илиCEND
выше.Вы хотите узнать о escape-последовательностях ANSI. Вот краткий пример:
Для получения дополнительной информации см. Http://en.wikipedia.org/wiki/ANSI_escape_code
Для символа блока попробуйте символ Юникода, например \ u2588:
Собираем все вместе:
источник
def d(*v): return '\x1B['+';'.join(map(str, v))+'m'
тогдаprint ' '.join([d(k,i)+str(i%10)+d(0) for i in range(30,38)+range(40,48) for k in range(2)])
Я отвечаю, потому что я нашел способ использовать коды ANSI в Windows 10, чтобы вы могли изменить цвет текста без каких-либо встроенных модулей:
Строка, которая делает эту работу
os.system("")
, или любой другой системный вызов, который позволяет вам печатать коды ANSI в Терминале:Примечание. Хотя это дает те же параметры, что и другие параметры Windows, Windows не полностью поддерживает коды ANSI, даже с этим приемом. Не все цвета оформления текста работают, и все «яркие» цвета (коды 90–97 и 100–107) отображаются так же, как обычные цвета (коды 30–37 и 40–47)
редактировать : Спасибо @jl за поиск еще более короткого метода.
tl; dr : добавить
os.system("")
начало вашего файла.Версия Python: 3.6.7
источник
if sys.platform.lower() == "win32": os.system('color')
еще больше, просто заменив его простоos.system('')
. Никаких условий не требуется, и код работает как в Windows 10, так и в Linux (когда я его тестировал). Как видите, вам не нужно делать системный вызовcolor
. Звонкиdir
,cd
,abcdef
и просто пустая строка отлично работает (хотя не пустые строки, скорее всего , печать вывод , который вы не хотите видеть).Мой любимый путь - с библиотекой Благословений (полное раскрытие: я написал). Например:
Чтобы напечатать цветные кирпичи, самый надежный способ - напечатать пробелы с фоновыми цветами. Я использую эту технику, чтобы нарисовать индикатор прогресса в прогрессивном носу :
Вы также можете распечатать в определенных местах:
Если вам придется использовать другие возможности терминала в ходе игры, вы также можете это сделать. Вы можете использовать стандартное форматирование строки Python, чтобы сделать его читаемым:
Хорошая особенность Blessings заключается в том, что он старается работать со всеми типами терминалов, а не только с (в подавляющем большинстве распространенными) ANSI-цветами. Он также сохраняет нечитаемые escape-последовательности в вашем коде, оставаясь при этом лаконичным в использовании. Радоваться, веселиться!
источник
getattr
если вам это нужно. Или, скорее, просто создайте строку формата динамически.can just pass
функция Python.sty похож на colorama, но он менее многословный, поддерживает 8 и 24 бит (rgb) цвета, позволяет регистрировать собственные стили, поддерживает приглушение, действительно гибкий, хорошо документированный и многое другое.
Примеры:
печатает:
Демо-версия:
источник
сгенерировал класс со всеми цветами, используя цикл for для итерации каждой комбинации цветов до 100, затем написал класс с цветами python. Скопируйте и вставьте, как вы, GPLv2 мной:
источник
Попробуйте этот простой код
источник
В Windows вы можете использовать модуль 'win32console' (доступный в некоторых дистрибутивах Python) или модуль 'ctypes' (Python 2.5 и выше) для доступа к Win32 API.
Чтобы увидеть полный код, который поддерживает оба способа, см. Код отчетности цветовой консоли от Testoob .
Пример ctypes:
источник
Тупо просто, основываясь на ответе @ joeld
Тогда просто
источник
print
-замены ? Возражение снято.print
это необходимо, для правильной репликации ее функциональности.def purple(cls, *args, **kwargs): print(cls.PURPLE, *args, cls.END, **kwargs)
</ code>Я обернул ответ @joeld в модуль с глобальными функциями, которые я могу использовать в любом месте моего кода.
файл: log.py
использовать следующим образом:
источник
Для Windows вы не можете печатать на консоли с цветами, если вы не используете win32api.
Для Linux это так же просто, как использовать print, с escape-последовательностями, описанными здесь:
Цвета
Для того, чтобы символ печатался как коробка, он действительно зависит от того, какой шрифт вы используете для окна консоли. Символ фунта работает хорошо, но это зависит от шрифта:
источник
источник
Я закончил тем, что делал это, я чувствовал, что это было самым чистым:
источник
Опираясь на ответ @joeld, используя https://pypi.python.org/pypi/lazyme
pip install -U lazyme
:Скриншот:
Некоторые обновления
color_print
с новыми форматерами, например:Примечание:
italic
,fast blinking
иstrikethrough
не может работать на всех терминалах, не работает на Mac / Ubuntu.Например
Скриншот:
источник
Попробуй онлайн
источник
обратите внимание, насколько хорошо
with
ключевое слово смешивается с такими модификаторами, которые необходимо сбросить (используя Python 3 и Colorama):источник
print(Style.BRIGHT + "Header Test")
иprint (Style.DIM + word)
для создания действительно приятного приглашения.contextlib
для Py3.@contextlib.contextmanager
декоратор, нет?Вы можете использовать Python-реализацию библиотеки curses: http://docs.python.org/library/curses.html
Кроме того, запустите это, и вы найдете свой ящик:
источник
Вы можете использовать CLINT:
Получите это от GitHub .
источник
Я знаю, что я опоздал. Но у меня есть библиотека под названием ColorIt . Это супер просто.
Вот некоторые примеры:
Это дает вам:
Стоит также отметить, что это кроссплатформенное приложение, протестированное на Mac, Linux и Windows.
Вы можете попробовать это: https://github.com/CodeForeverAndEver/ColorIt
Примечание. Мигание, курсив, полужирный и т. Д. Будут добавлены через несколько дней.
источник
Если вы программируете игру, возможно, вы хотели бы изменить цвет фона и использовать только пробелы? Например:
источник
Если вы используете Windows, то здесь вы идете!
источник
print("%X --> %s" % (color, "Have a fine day!"), end='', flush=True)
Если вы используете Django
снимок:
(Я обычно использую цветной вывод для отладки на терминале runserver, поэтому я добавил его.)
Вы можете проверить, установлен ли он на вашем компьютере:
$ python -c "import django; print django.VERSION"
Чтобы установить его, проверьте: Как установить Django
Попробуйте!
источник
Вот пример проклятия:
источник
https://raw.github.com/fabric/fabric/master/fabric/colors.py
источник
asciimatics предоставляет портативную поддержку для создания текстового интерфейса и анимации:
Asciicast:
источник
Еще один модуль pypi, который включает функцию печати python 3:
https://pypi.python.org/pypi/colorprint
Это можно использовать в Python 2.x, если вы тоже
from __future__ import print
. Вот пример Python 2 со страницы Pypi для модулей:Выходы "Привет, мир!" со словами в синем и восклицательным знаком, выделенным красным и мигающим.
источник