Sería bueno aprovechar una biblioteca externa para esto en lugar de reinventar la rueda para la mecánica real: vea lo que hay ahí fuera.
ok, hay un puñado de técnica anterior:
Ideas generales:
print(red(blink("text") + "non blinking text"))
etc. Parece bastante fácil de usar, posiblemente algunos puntos complicados en la implementación real; consulte Term :: ANSIColor ( fuente ) para obtener ideas, tal vez.print(RED + BLINK + "text" + CLEAR + RED + "non blinking text" + CLEAR)
.Mapas de código ANSI:
Más notas:
if win32: env.disable_colors = True
automática.Estado actual:
fabric.colors
en Fabric 0.9.2colors
incluido actualmente, es probable que se rompa la compatibilidad con versiones anteriores.Originalmente presentado por Jeff Forcier ( bitprophet ) en 2009-11-11 a las 05:46 pm EST
Jeff Forcier (
Empecé a jugar con esto. Un esquema de color posible, usando nombres de host magenta, tareas verdes y líneas azules continuas:
(Puede ignorar el texto real, es solo un resultado duplicado de una ejecución de tarea real. No, no se puede acceder públicamente a los dominios involucrados :))
el 2009-11-12 a las 02:10 pm EST
Jeff Forcier (
Otro ejemplo, con adiciones:
el 2009-11-12 a las 02:34 pm EST
Jeff Forcier (
Además, nunca he dicho que no use estupideces como mensajes de prueba :) sin ofender a la madre de nadie.
el 2009-11-12 a las 02:35 pm EST
Nick Trew ( vxnick ) publicó:
Considere agregar env.always_use_bold
(o similar).
el 2010-04-14 a las 10:06 am EDT
Kenneth Reitz ( kennethreitz ) publicó:
Recomiendo encarecidamente colorama:
http://pypi.python.org/pypi/colorama
el 2010-10-11 a las 10:49 pm EDT
Rick Harding ( mitechie ) publicó:
Kenneth Reitz escribió:
Recomiendo encarecidamente colorama:
+1 en colorama, muy bonito y fácil de envolver, así que lo haces opcional. Si colorama está instalado, puede imprimir con colores, de lo contrario, lisos.
el 2011-03-14 a las 11:25 am EDT
¡fabuloso es una gran biblioteca para trabajar con colores en Python! No sé colorama, pero si solo necesitamos colores de 8 bits, puedo hacer una función para hacerlo con solo 20 líneas de código (y no dependerá de otra biblioteca). Pero si necesitamos un soporte más completo, creo que fabuloso será una gran elección.
FWIW Actualmente soy un gran defensor de los terminales de 256 colores :) Agregaré fabuloso a la lista en la parte superior, ¡gracias!
mi función de color personalizado.
def colorize(msg, fg='green', bg='black', style='reset'):
color_map = dict(black=0, red=1, green=2, yellow=3, blue=4, magenta=5, cyan=6, white=7)
style_map = dict(reset=0, bold=1, underscore=4, blink=5, reverse=7, conceal=8, underline=4)
return '\033[3%d;4%d;%dm%s\033[0m' % (color_map[fg], color_map[bg], style_map[style], msg)
Esta tarde, tuve la idea de colorear los nombres de host en función del nombre de host en sí. De tal manera que cada nombre de host tenga un color diferente.
Voy a jugar con esto. No estoy seguro de a dónde va.
Leí este problema y parece que el trabajo para colorear la salida se ha desvanecido un poco. ¿Alguna razón en particular para eso? ¿Ha sido abandonado de alguna manera?
Con mucho gusto lo intentaré.
He mirado algunas de las bibliotecas mencionadas anteriormente y soy un poco escéptico. Hasta ahora, fabuloso es el que menos me preocupa. Pero no estoy seguro de si funcionará en Windows (principalmente debido al archivo llamado xterm256.(py|c)
).
También me encontré con
La razón de mi escepticismo es que me parece que todas esas bibliotecas están tratando de hacer demasiado, si lo único que necesitamos es texto en color.
Mi solución de referencia fue un fragmento muy simple escrito por Nadia Alramli. Desafortunadamente, su blog ya no está en línea, pero después de buscar en Google, encontré su página de github . Es muy simple y hace lo que debería. Aunque tampoco lo he probado nunca en Windows.
También había una receta realmente agradable en el libro de cocina de ActiveState que usaba de vez en cuando. Pero no puedo recuperar esto. Tendré que seguir buscando en Google.
@exhuma ¡ Gracias por pinchar, apreciamos mucho las notas! Dudo que Fab 1 vea una gran coloración (aunque creo que recientemente fusioné una cosa de "mostrar errores en rojo"? Memoria confusa) pero el plan es tenerlo en Fab 2 desde el principio, donde los mecanismos de salida deberían escribirse más inteligentemente. Entonces esta información sigue siendo útil.
No te preocupes ... y gracias por la actualización. Casi siempre me olvidé de esta publicación ... Hago demasiadas cosas y demasiadas cosas en paralelo :(
Pero, mientras tanto, también estaba jugando con las bendiciones. Y parece que "simplemente funciona". Incluso compatibilidad con 256 colores (incluso si no está documentado). Mis errores están aquí: https://github.com/exhuma/blessings/compare/256-colour-support La salida en la consola se veía bien.
Además, con respecto a mi declaración anterior de que todas las bibliotecas mencionadas intentan hacer demasiado, es _menos_ cierto para las bendiciones. Es bastante minimalista.
Sí, las bendiciones se destacaron por ser bastante radicales cuando lo miré por última vez. Intentaré recordar mirarlo primero para Fab 2 :)
Bendiciones de FWIW no es compatible con Windows, colorama sí (esto es lo que estamos usando en pip para eso). O mejor dicho, las bendiciones necesitan colorama para obtener color en Windows.
Para personas como yo que ejecutan Windows y tratan de hacer que cosas como run("ls --color")
vean bien, me gustaría señalar que esto funciona:
colorama
( pip install colorama
)fabfile.py
:try:
import colorama
colorama.init()
except ImportError:
print "WARNING: Some tasks may be hard to read unless you install colorama."
¿Alguna actualización sobre esto? Estoy buscando una opción para colorear los comandos remotos. Hasta ahora veo que los escapes ANSI de los comandos remotos se muestran correctamente.
Aún así, me gustaría poder cambiar la salida del comando de prefijo y agregarle escapes ANSI, tal vez un color diferente para local y remoto, también un color diferente para stderr (err) vs stdout (out).
Agregué PR pyinvoke / invoke # 663 para respaldar esto. Tenga en cuenta que esto es principalmente un PR para que la bola vuelva a rodar. No utiliza cualquiera de las bibliotecas mencionadas, ya que aún no está claro cómo deben integrarse. Vea las notas sobre pyinvoke / invoke # 663
Estoy absolutamente dispuesto a reemplazar mi propio código con una biblioteca de terceros.
Comentario más útil
Para personas como yo que ejecutan Windows y tratan de hacer que cosas como
run("ls --color")
vean bien, me gustaría señalar que esto funciona:colorama
(pip install colorama
)fabfile.py
: