Python | изменить цвет текста в оболочке

Мне было интересно, знает ли кто, как установить цвет текста, который появляется в оболочке. Я заметил, что "ls" использует несколько разных цветов при печати информации на экране (на моем Linux-боксе), задавался вопросом, могу ли я использовать это в Python.

Ответ 1

Используйте escape-последовательности Curses или ANSI. Прежде чем вы начнете извергать escape-последовательности, вы должны проверить, что stdout - это tty. Вы можете сделать это с помощью sys.stdout.isatty(). Здесь функция, выведенная из моего проекта, который выводит результат красным или зеленым цветом в зависимости от состояния, используя escape-последовательности ANSI:

def hilite(string, status, bold):
    attr = []
    if status:
        # green
        attr.append('32')
    else:
        # red
        attr.append('31')
    if bold:
        attr.append('1')
    return '\x1b[%sm%s\x1b[0m' % (';'.join(attr), string)

Ответ 2

Я только что описал очень популярную библиотеку clint. Который имеет больше особенностей, кроме окрашивания вывода на терминале.

Кстати, он поддерживает терминалы MAC, Linux и Windows.

Вот пример его использования:

Установка (в Ubuntu)

pip install clint

Чтобы добавить цвет к некоторой строке

colored.red('red string')

Пример: использование для вывода цвета (стиль команды django)

from django.core.management.base import BaseCommand
from clint.textui import colored


class Command(BaseCommand):
    args = ''
    help = 'Starting my own django long process. Use ' + colored.red('<Ctrl>+c') + ' to break.'

    def handle(self, *args, **options):
        self.stdout.write('Starting the process (Use ' + colored.red('<Ctrl>+c') + ' to break)..')
        # ... Rest of my command code ...

Ответ 4

curses позволит вам правильно использовать цвета для используемого типа терминала.

Ответ 6

Это так просто сделать на ПК: ОС Windows: Отправьте команду os для изменения текста:   import os

os.system('color a') #green text
print 'I like green' 
raw_input('do you?')