Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python |在shell中更改文本颜色_Python_Shell - Fatal编程技术网

Python |在shell中更改文本颜色

Python |在shell中更改文本颜色,python,shell,Python,Shell,我想知道是否有人知道如何设置显示在shell中的文本的颜色。我注意到“ls”在将信息打印到屏幕上时使用了两种不同的颜色(在我的Linux机器上),我想知道我是否可以在Python中利用这一点。所有主要颜色代码都在中给出,这将允许您为正在使用的终端类型正确使用颜色。使用诅咒或ANSI转义序列。在开始喷射转义序列之前,应该检查stdout是否为tty。您可以使用sys.stdout.isatty()执行此操作。下面是从我的一个项目中提取的一个函数,它使用ANSI转义序列,根据状态以红色或绿色打印输出

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

所有主要颜色代码都在

中给出,这将允许您为正在使用的终端类型正确使用颜色。

使用诅咒或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)

看一看

在PC上执行此操作非常简单:Windows操作系统: 向操作系统发送更改文本的命令: 导入操作系统

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

我刚才描述了非常流行的图书馆。除了在终端上为输出着色外,它还有更多的功能

顺便说一句,它支持MAC、Linux和Windows终端

下面是使用它的示例:

安装(在Ubuntu中)

为某些字符串添加颜色

colored.red('red string')
示例:用于颜色输出(django命令样式)

来自django.core.management.base import BaseCommand的

从clint.textui导入彩色
类命令(BaseCommand):
args=''
help='开始我自己的django长流程。使用“+colored.red”(“+c”)+”中断
def句柄(自身、*参数、**选项):
self.stdout.write('启动进程(使用'+colored.red('+c')+'中断)'))
# ... 我的其余命令代码。。。

+1特别是对于
sys.stdout.isatty()
在输出不是tty的情况下,有一个覆盖也是很好的,但是您仍然需要颜色-比如说您只是用sed或grep
unbuffer来过滤行可以做到这一点,所以如果没有覆盖,您就不会被卡住。@Ignacio,酷,我想知道为什么debian没有无缓冲软件包:(找到了-debian将其隐藏在
expect dev
名称下
expect_unbuffer
此网站的安全证书已过期。有人可以验证此网站是否安全吗?@blackplant,是的,它看起来与以前一样。此外,如果您愿意,您可以查看它。我会联系他们,让他们知道证书的相关信息。即使您需要o相信它,@Black植物人,你会收到一个代理错误。这会全局设置整个终端的颜色,而不是其中的某些字符。在spyder控制台或spyder IPython控制台中根本不起作用。
colored.red('red string')
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 ...