colorama – Texto y fondo coloreados en la consola

colorama – Texto y fondo coloreados en la consola

Actualizado el 01/04/2022.

Colorama es una librería de Python que permite imprimir textos en colores en la salida de la terminal o consola, incluyendo el fondo o estilo del texto, en múltiples plataformas. En la mayoría de las terminales el módulo utiliza internamente las secuencias de escape ANSI o bien las funciones de la API del sistema en Windows para obtener el mismo resultado (¡pero el usuario no debe preocuparse por eso!). He aquí una vista previa (tomada del proyecto en GitHub) de lo que puede lograrse con esta herramienta:

Descarga e instalación

Colorama no tiene dependencias y está escrito completamente en Python, por lo que su instalación es muy sencilla vía la herramienta pip:

python -m pip install colorama

¡Eso es todo! Como alternativa a pip, también puedes descargar el código de fuente en archivo ZIP desde su página en PyPI. Una vez extraído, simplemente:

python setup.py install

Ejemplos

Antes de imprimir cualquier texto, es necesario inicializar colorama llamado a la función init():

from colorama import init
init()

Internamente, el módulo reemplaza la salida estándar, stdout y stderr, para poder convertir las secuencias de escape ANSI en llamadas a la API de Windows y así lograr el soporte multiplataforma.

Para cambiar el color del texto, se utiliza una de las constantes colorama.Fore.*. Por el ejemplo, el siguiente código imprime «Recursos Python» en color verde.

from colorama import Fore, init
init()

print(Fore.GREEN + "Recursos Python")

He aquí la vista previa en Windows y CentOS, respectivamente:

Vista previa

Para cambiar el fondo, análogamente utilizamos las constantes colorama.Back.*.

from colorama import Back, init
init()

print(Back.RED + "Recursos Python")

También pueden ser utilizados simultáneamente:

from colorama import Back, Fore, init
init()

print(Back.RED + Fore.GREEN + "Recursos Python")

Los colores disponibles para las constantes Back y Fore son los siguientes:

  • BLACK
  • RED
  • GREEN
  • YELLOW
  • BLUE
  • MAGENTA
  • CYAN
  • WHITE

Nótese que el efecto (color de texto y fondo) se mantiene para las siguientes impresiones.

print(Back.RED + Fore.GREEN + "Recursos Python")
print("Este texto mantiene el efecto anterior.")

Para regresar a los colores por defecto, utilícese las constantes Back.RESET (para el fondo) y Fore.RESET (para el texto).

# Después de las líneas anteriores.
print(Back.RESET + Fore.RESET + "Este texto es normal.")

Si quieres que los colores vuelvan a su estado original luego de cada mensaje (para evitar usar constantemente RESET) puedes indicárselo a Colorama al inicializar.

init(autoreset=True)

Además, puedes controlar la intensidad del texto (intensidad baja, normal o alta).

from colorama import Style, init
init()

print(Style.DIM + "Recursos Python")
print(Style.NORMAL + "Recursos Python")
print(Style.BRIGHT + "Recursos Python")

(En Windows, Style.DIM es igual a Style.NORMAL)

Vista previa

Style.RESET_ALL puede emplearse para regresar todos los estilos a la normalidad.

Todos los efectos anteriores pueden combinarse, por ejemplo:

print(Style.BRIGHT + "Recursos", Style.RESET_ALL + Fore.GREEN + "Python")

Colores combinados en Windows

En el archivo ZIP del código de fuente encontrarás más ejemplo dentro de la carpeta demos y en la página del proyecto. Por ejemplo, el archivo demos/demo01.py muestra todas las combinaciones de estilos.

Vista previa

Por último, Colorama permite también controlar la posición del texto en la consola. Por ejemplo, el siguiente código imprime «Recursos Python» y luego de 3 segundos reemplaza ese mismo texto por «www.recursospython.com».

from time import sleep

from colorama import Cursor, init
init()

print("Recursos Python")
sleep(3)
print(Cursor.BACK(15) + Cursor.UP(1) + "www.recursospython.com")

BACK(15) retrocede 15 posiciones (el tamaño de la cadena «Recursos Python»), mientras que UP(1) sube una línea. Análogamente puede usarse Cursor.FORWARD (para ir hacia adelante) y Cursor.DOWN (para bajar líneas).



15 comentarios.

  1. Germán Cifuentes says:

    Cambié a Spyder, tampoco me funciona, me genera un mensaje que dice que ha sido importado colorama pero que no ha sido usado, corrí todos los ejemplos de su página, e incluso usé import colorama. ansi, no hay errores en el código pero la salida me la presenta en blanco y negro.

  2. hola y como le doy color a los numeros, por ejemplo uso variables con numeros y textos ero para imprimirlos utilizo esas variables

    variable1 = «el proximo eclipse es en esta fecha»
    variable2 = «12456|134|141»

    print(variable1, variable2)

    • Recursos Python says:

      Hola, deberías imprimir por partes. Recordá que podés usar print("Mensaje", end="") para evitar que Python agregue un salto al final de la línea (y así escribir en una misma línea con sucesivas llamadas a print()).

      Saludos

  3. Buenas a todos los que no le funciona. Teneis que inicializar colorama para que funcione
    poniendo

    init(autoreset=True)

    ejemplo:

    from colorama import init, Fore, Back, Style

    init(autoreset=True) #Muy importante, sin esto no funciona!

    print(Back.WHITE + Fore.BLUE + ‘hola don pepito!’)

    • Germán Cifuentes says:

      Yako, que pena, no me funcionó, agregué la instrucción que dices y tampoco hace nada, no cambia el color.
      import colorama
      from colorama import init, Fore, Back, Style

      init(autoreset=True) #Muy importante, sin esto no funciona!

      print(Back.WHITE + Fore.BLUE + «hola don pepito!»)
      from colorama import Back, init, Fore
      init()
      print(Back.RED + «Recursos Python»)

      print(Style.DIM + «Recursos Python»)
      print(Style.NORMAL + «Recursos Python»)
      print(Style.BRIGHT + «Recursos Python»)

      print(Back.RESET + Fore.RESET + «Este texto es normal.»)

    • Buenas a todos los que no le funciona. Teneis que inicializar colorama para que funcione
      poniendo

      init(autoreset=True)

      ejemplo:

      from colorama import init, Fore, Back, Style

      init(autoreset=True) #Muy importante, sin esto no funciona!

      print(Back.WHITE + Fore.BLUE + ‘hola don pepito!’)

  4. Germán Cifuentes says:

    Estoy trabajando con Microsoft Visual Studio, en el entorno Python pero no he podido instalar Colorama, me genera estos errores:
    WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(«Can’t connect to HTTPS URL because the SSL module is not available.»)’: /simple/colorama/

Deja una respuesta