Utilizando cores para escrever no terminal (Python)

Quem conhece Python sabe que uma das coisas que ele faz muito bem é automatizar tarefas. Durante estas automatizações, escrevemos mensagens no terminal, para que o usuário consiga acompanhar o que está acontecendo.

O problema começa quando escrevermos muitas coisas no terminal… fica aquele tanto de texto amontoado e só quem fez aquele script sabe identificar o que é importante ou não. Uma das formas de resolver isso é utilizar cores para destacar as mensagens importantes.Existem algumas formas de fazer isso. Vou começar pela que considero mais simples e que não depende de outros pacotes, depois vou mostrar como utilizar alguns pacotes mais famosos.

 

1. Utilizando caracteres ANSI

A primeira forma (e mais simples, na minha opinião) é utilizando caracteres ANSI.  Esta forma consiste em colocar um conjunto de carecteres logo antes do texto que você quer colorir.

Veja a relação de códigos ANSI e suas respectivas cores:

Agora um exemplo de como aplicar essas cores:

Por que foi necessário concatenar o código RESET? Sem o reset (das cores), o resto da frase ficaria em vermelho.

Agora você pode se divertir a vontade e misturar as cores e estilos da forma que quiser, por exemplo:

Como pode ser observado, os caracteres referentes ao RESET removem todas as formatações.

 

OK. Então vimos que é só concatenar os valores… mas fica feio e pouco prático. Seria uma boa ideia encapsular esta lógica, certo? Podemos criar uma classe que resolve isso e (inclusive) implementa o que falamos no último post (Inicializando dicionário com valores padrões)…

A primeira coisa é criar a classe com um dicionário com um dicionário contendo a relação de cores:

 

O próximo passo é criar uma função que recebe o nome da cor e retorna o código ANSI correspondente:

A função acima tenta retornar o código correspondente ao argumento informado. Se não for possível, retorna o caractere que faz um reset nos formatos.

 

Agora é só criar a função que faz o print da mensagem:

A função acima recebe como argumento a mensagem e a cor. Se o nome da cor estiver errado, vai mostrar a mensagem sem a formatação.

Para utilizar é simples:

O fonte acima vai produzir o seguinte resultado:

 

Para facilitar, criei esta classe e adicionei três métodos: success (verde), error (vermelho) e warning (amarelo). O fonte dela está no meu Github.

 

 

2. Utilizando o pacote termcolor

Para utilizar este pacote, a primeira coisa é baixa-lo. Para isso, utilize o PIP:

 

Este pacote é bem flexível e possui uma série de opções, mas vou utilizar um exemplo básico aqui:

 

Disponibilizei este exemplo no meu Github. Existem mais exemplos na pagina deste pacote: https://pypi.python.org/pypi/termcolor

 

 

3. Utilizando o pacote sty

Assim como o termcolor, precisamos instalar este pacote. Sugiro utilizar o pip:

 

Este pacote tem mais possibilidades. Veja alguns exemplos de utilização abaixo:

O resultado final é o mesmo dos exemplos anteriores. Inclui no meu Github um exemplo mais completo da utilização deste pacote. Link para o pacote: https://pypi.python.org/pypi/sty/1.0.0b4

 

Espero ter ajudado.

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Dev, Python and tagged , , , , .

One Comment

  1. Pingback: Tabela de cores ANSI (Python) – Raccoon Ninja

Comments are closed.