Python |更改shell中的文本颜色

时间:2010-02-24 22:46:38

标签: python shell

我想知道是否有人知道如何设置shell中显示的文本的颜色。我注意到'ls'在将信息打印到屏幕上时(在我的Linux机器上)使用了几种不同的颜色,想知道我是否可以在Python中利用它。

6 个答案:

答案 0 :(得分:53)

使用Curses或ANSI转义序列。在开始喷射转义序列之前,您应该检查stdout是否为tty。您可以使用sys.stdout.isatty()执行此操作。这是从我的项目中提取的一个函数,使用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)

答案 1 :(得分:8)

我刚才描述了非常受欢迎的图书馆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 ...

答案 2 :(得分:5)

所有主要颜色代码均在https://www.siafoo.net/snippet/88

处给出

答案 3 :(得分:4)

curses将允许您正确使用颜色作为正在使用的终端类型。

答案 4 :(得分:2)

答案 5 :(得分:-3)

这在PC上很简单:Windows操作系统: 发送os命令来更改文本:     import os

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