python在shell中更改文本颜色

Python | change text color in shell

本问题已经有最佳答案,请猛点这里访问。

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


使用curses或ansi转义序列。在开始执行转义序列之前,应该检查stdout是否是tty。你可以用sys.stdout.isatty()来做这个。下面是从我的一个项目中提取的一个函数,它使用ansi转义序列以红色或绿色打印输出,具体取决于状态:

1
2
3
4
5
6
7
8
9
10
11
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)


我刚刚描述了非常受欢迎的图书馆克林特。它除了在终端上对输出着色之外还有更多的特性。

顺便说一下,它支持Mac、Linux和Windows终端。

下面是使用它的示例:

安装(在Ubuntu中)

1
pip install clint

为某些字符串添加颜色

1
colored.red('red string')

示例:用于颜色输出(django命令样式)

1
2
3
4
5
6
7
8
9
10
11
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 ...


所有主要的颜色代码都在https://www.siafoo.net/snippet/88上给出。


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


请访问http://www.pixelbeat.org/talks/python/ls.py


在PC上这么简单:Windows操作系统:向操作系统发送命令以更改文本:导入操作系统

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