Comment faire pour imprimer en couleur de texte dans le terminal en Python?
Comment puis-je sortie du texte de couleur à la borne, en Python?
Quel est le meilleur Unicode symbole pour représenter un bloc solide?
- Vous devez spécifier des informations supplémentaires afin d'obtenir de meilleures réponses: multiplateforme? sont des modules externes accepté?
- IPython t-il, de la croix-plate-forme. Voir ce qu'ils utilisent?
- Ce symbole serait faire un grand bloc de couleur:
█
Seul problème est qu'il est ASCII étendu, peut-être vous pourriez le faire fonctionner à l'aide dehttp://stackoverflow.com/questions/8465226/using-extended-ascii-codes-with-python
- Certains terminaux peuvent aussi afficher des caractères Unicode. Si cela est vrai pour votre terminal, les caractères possibles sont presque illimitées.
- Cette réponse est venue assez tard, mais il semble être le meilleur pour moi... ceux qui sont votés au-dessus nécessitent des hacks pour Windows alors que celui-ci fonctionne bien: stackoverflow.com/a/3332860/901641
- exécuter
pip install ipython
et ajouteralias python="ipython"
à votre script de démarrage du shell (par exemple,~/.bashrc
pour le shell bash) - Que diriez - stackoverflow.com/a/42528796/610569 en utilisant pypi.python.org/pypi/lazyme ? (avertissement: shameless plug)
Vous devez vous connecter pour publier un commentaire.
Un peu cela dépend de ce que la plate-forme sur. La façon la plus courante de le faire est par l'impression des séquences d'échappement ANSI. Pour un exemple simple, voici le code python de la blender scripts de compilation:
Pour utiliser ce code, vous pouvez faire quelque chose comme
Cela fonctionne sur les systèmes unix, y compris OS X, linux et windows (si vous utilisez ANSICON, ou dans Windows 10 vous permettre L'émulation VT100). Il y a des codes ansi pour le réglage de la couleur, de déplacer le curseur, et plus encore.
Si vous allez à se compliquer avec cela (et il semble que vous êtes, si vous l'écriture d'un jeu), vous devez regarder dans les "malédictions" module, qui s'occupe de beaucoup de pièces complexes pour vous. Le Python Malédictions HowTO est une bonne introduction.
Si vous n'êtes pas à l'aide de caractères ASCII étendus (c'est à dire pas sur un PC), vous êtes coincé avec les caractères ascii ci-dessous 127, et '#' ou '@' est probablement votre meilleur pari pour un bloc. Si vous pouvez vous assurer que votre terminal à l'aide d'un IBM jeu de caractères ascii étendu, vous avez beaucoup plus d'options. Caractères 176, 177, 178 et 219 sont le "bloc de caractères".
Moderne, basée sur le texte des programmes, tels que "Dwarf Fortress", émuler le mode texte en mode graphique, et d'utiliser les images de la classique d'un PC de la police. Vous pouvez trouver certains de ces images que vous pouvez utiliser sur le La Forteresse Naine Wiki voir (l'utilisateur fait tilesets).
La Texte En Mode Démo Concours dispose de plus de ressources pour faire des graphismes en mode texte.
Hmm.. je pense que suis un peu emporté sur cette réponse. Je suis dans le milieu de la planification d'un texte épique basé sur le jeu d'aventure, si. Bonne chance avec votre texte en couleur!
disabled
utilisé pour?bcolors
instance. Par exemple, vous pourriez créer unbcolors
de l'instance et ensuite utiliser les variables de membre de l'instance d'imprimer votre coloriage personnages, mais si vous avez décidé que vous ne vouliez plus de coloration, vous pouvez l'appelerdisable
avant l'impression des caractères et ils ne pouvaient imprimer des chaînes vides.BOLD = "\033[1m"
si vous voulez mettre en gras le texte (utile pour les en-têtes).UNDERLINE = '\033[4m'
. Ce qui se passe siansi.sys
est désactivé sur Windows et que vous essayez d'utiliser ces séquences d'échappement ANSI?tput
, comme depuis, il en résulte plus de code portable.disable
est quand vous rediriger la sortie vers un fichier; tandis que les outils commecat
peut soutenir des couleurs, il est généralement préférable de ne pas imprimer les informations de couleur de fichiers.$TERM
! Mieux, utiliser un standard de la bibliothèque termcap de se référer à eux par leur nom...print(''.join(['\033[' + str(x) + 'mfoo' for x in range(0,150)]) +'\033[0m')
import ctypes;
kernel32 = ctypes.WinDLL('kernel32');
hStdOut = kernel32.GetStdHandle(-11);
mode = ctypes.c_ulong();
kernel32.GetConsoleMode(hStdOut, ctypes.byref(mode));
mode.value |= 4;
kernel32.SetConsoleMode(hStdOut, mode)
.ESC
(c'est à dire le caractère #27 dans la table ASCII).33
et1B
sont tout simplement l'octal et la représentation hexadécimale du nombre décimal 27.print('\033[94mfoo')
dans mon terminal, tout le texte dans mon terminal après ce qui est bleu... Comment puis-je éviter cela?\033[0m
. Avec l'exemple ci-dessus, en ajoutantbcolors.ENDC
après une déjà lancé de couleur.1;
permettra également de mettre en gras. Comme\033[1;Xm
(où X est le code de couleur)Je suis surpris que personne n'a mentionné le Python termcolor module. L'utilisation est assez simple:
Ou en Python 3:
Il peut ne pas être assez sophistiqué, cependant, pour la programmation de jeu et les "blocs de couleurs" que vous voulez faire...
cprint()
fonction:cprint('Hello, World!', 'green', 'on_red')
.termcolor.COLORS
vous donne une liste de couleurs.format()
pour l'ajout de variables de la chaîne d'impression, comme ceci:print(colored('{0}', 'red').format(var_with_msg))
. Belle solution! Tksos.system('color')
d'abord, puis les séquences d'échappement ANSI commencer à travailler.La réponse est Colorama pour tous de la croix-plate-forme de la coloration en Python.
Un Python 3.6 exemple de capture d'écran:
<b>bold</b>
) pour ajouter un style à la borne de texteColorama
est livré avec Anaconda, alors quetermcolor
, suggéré dans la réponse ci-dessus, ne fonctionne pas. Cette bretonneColorama
hautement préférable pour beaucoup de Python.import colorama
et appelcolorama.init()
de sorte que lorsque vous imprimez le résultat vers la sortie standard, il fonctionne sur Windows et ailleurs.Imprimer une chaîne qui commence une couleur/style de la corde, puis à la fin de la couleur/changement de style avec
'\x1b[0m'
:Obtenir un tableau des options de format pour la coquille de texte avec le code suivant:
Léger-sur-sombre-exemple (complet)
Foncé-sur-la lumière de l'exemple (partiel)
Définir une chaîne qui commence une couleur et une chaîne qui se termine la couleur, puis imprimer votre texte avec le début de la chaîne à l'avant et à la fin de la chaîne à la fin.
Ce produit est le suivant dans
bash
, dansurxvt
avec un Zenburn-style color scheme:Par le biais de l'expérimentation, nous pouvons obtenir plus de couleurs:
Remarque:
\33[5m
et\33[6m
clignotent.Cette façon, nous pouvons créer une collection de couleurs:
Voici le code pour générer le test:
\33[0m
, ouCEND
ci-dessus.Vous voulez vous renseigner sur des séquences d'échappement ANSI. Voici un bref exemple:
Pour plus d'info voir http://en.wikipedia.org/wiki/ANSI_escape_code
Pour un bloc de caractères, essayez un caractère unicode comme \u2588:
Mettant tous ensemble:
def d(*v): return '\x1B['+';'.join(map(str, v))+'m'
puisprint ' '.join([d(k,i)+str(i%10)+d(0) for i in range(30,38)+range(40,48) for k in range(2)])
Ma façon préférée est la Bénédictions bibliothèque (divulgation complète: je l'ai écrit). Par exemple:
D'impression couleur de briques, de la manière la plus fiable consiste à imprimer des espaces avec des couleurs d'arrière-plan. J'utilise cette technique pour tirer la barre de progression dans nez-progressif:
Vous pouvez imprimer dans des endroits spécifiques ainsi:
Si vous avez de la boue avec d'autres terminaux capacités dans le cadre de votre jeu, vous pouvez le faire aussi bien. Vous pouvez utiliser Python standard de la chaîne de mise en forme pour garder lisible:
La bonne chose à propos des Bénédictions, c'est qu'il fait de son mieux pour travailler sur toutes sortes de bornes, pas seulement l' (principalement des communes) ANSI-couleurs. Il maintient également illisible séquences d'échappement de votre code, tout en restant concis à utiliser. Amusez-vous!
getattr
si vous en avez besoin. Ou, plus probablement, il suffit de créer la chaîne de format de manière dynamique à la place.can just pass
une fonction python.généré une classe avec toutes les couleurs à l'aide d'une boucle pour parcourir chaque combinaison de couleur jusqu'à 100, puis écrit une classe avec python couleurs. Copier et coller comme vous, la GPLv2 par moi:
Essayez ce simple code
sty est similaire à colorama, mais c'est moins verbeux, prend en charge 8bit et 24bit (rvb) couleurs, vous permet d'enregistrer vos propres couleurs, est vraiment souple et bien documenté.
imprime:
Démo:
Sur Windows, vous pouvez utiliser le module 'win32console" (disponible dans certaines distributions Python) ou "module ctypes' (Python 2.5 et plus) pour accéder à l'API Win32.
Pour voir le code complet qui prend en charge les deux sens, voir la la couleur de la console code de signalement de Testoob.
ctypes exemple:
Bêtement simple basé sur @joeld la réponse de
Puis juste
print
-remplacements? Objection annulé.print
on doit s'assurer de bien reproduire ses fonctionnalités.J'ai enveloppé @joeld réponse dans un module global de fonctions que je peux l'utiliser n'importe où dans mon code.
fichier: log.py
utiliser comme suit:
Pour Windows vous ne pouvez pas imprimer à la console avec les couleurs, sauf si vous utilisez la win32api.
Pour Linux, c'est aussi simple que l'utilisation de l'impression, avec les séquences d'échappement expliqué ici:
Les couleurs
Pour le caractère à imprimer comme une boîte, ça dépend vraiment de ce que la police que vous utilisez pour la fenêtre de la console. Le symbole livre fonctionne bien, mais cela dépend de la police:
Que j'ai fait cela, j'ai senti qu'il était plus propre:
Bâtiment sur @joeld réponse, à l'aide de https://pypi.python.org/pypi/lazyme
pip install -U lazyme
:Capture d'écran:
Certaines mises à jour de la
color_print
avec de nouveaux formateurs, par exemple:Remarque:
italic
,fast blinking
etstrikethrough
peut ne pas fonctionner sur tous les terminaux, ne fonctionne pas sur Mac /Ubuntu.E. g.
Capture d'écran:
remarque comment bien le
with
mot-clé mélanges avec des modificateurs comme celles-ci qui doit être réinitialisé (à l'aide de Python 3 et Colorama):print(Style.BRIGHT + "Header Test")
etprint (Style.DIM + word)
pour créer un vraiment agréable invite.contextlib
pour Py3.@contextlib.contextmanager
décorateur sur elle, non?@contextlib.contextmanager
est un raccourci pour rendre plus facile à produire contexte des gestionnaires, mais vous pouvez toujours utiliser normal contexte gestionnaires.Vous pouvez utiliser le Python de la mise en œuvre de la bibliothèque curses:
http://docs.python.org/library/curses.html
Aussi, exécutez-le et vous trouverez votre boîte:
Vous pouvez utiliser CLINT:
L'obtenir à partir de GitHub.
Je vais répondre parce que j'ai trouvé un moyen d'utiliser ANSI codes sur windows de sorte que vous pouvez changer la couleur du texte sans aucun modules:
La ligne qui fait de cet ouvrage est
os.system('color')
, mais assurez-vous que vous ne levez pas les erreurs, si la personne n'est pas sur Windows vous pouvez utiliser ce script:Version de Python: 3.6.7 (32 bits)
Si vous êtes à la programmation d'un jeu peut-être vous voulez changer la couleur d'arrière-plan et utiliser uniquement des espaces? Par exemple:
Si vous utilisez Windows, vous pouvez y aller!
print("%X --> %s" % (color, "Have a fine day!"), end='', flush=True)
asciimatics fournit un support portatif pour la construction de texte de l'INTERFACE utilisateur et des animations:
Asciicast:
Voici un malédictions exemple:
https://raw.github.com/fabric/fabric/master/fabric/colors.py
YAY!!! une autre version
bien que je trouve cette réponse utile, je l'ai modifiée un peu. cette Github Gist est le résultat
utilisation
en outre, vous pouvez envelopper les usages courants:
https://gist.github.com/Jossef/0ee20314577925b4027f
Encore un autre pypi module qui enveloppe le python 3 de la fonction d'impression:
https://pypi.python.org/pypi/colorprint
Il est utilisable en python 2.x si vous aussi vous
from __future__ import print
. Voici un python 2 exemple à partir des modules pypi page:Affiche "Hello, world!" avec les mots en bleu et le point d'exclamation en gras et en rouge et clignote.
Une option plus simple serait d'utiliser le
cprint
fonction determcolor
paquet.Il prend également en charge
%s, %d
format d'impressionSi vous utilisez Django
instantané:
(J'utilise généralement de couleur de sortie pour le débogage sur runserver terminal donc je l'ai ajouté.)
Vous pouvez tester si il est installé sur votre machine:
$ python -c "import django; print django.VERSION"
Pour l'installer, vérifier: Comment faire pour installer Django
Lui donner un essai!!
Pour les personnages
Votre terminal probablement utilise Unicode (généralement codé en UTF-8) caractères, de sorte que c'est seulement une question de la sélection de la police pour voir votre personnage préféré. Char Unicode U+2588, "pâté" est celle que je vous suggère de l'utiliser.
Essayez ce qui suit:
Examiner le fichier plus tard avec votre favori spectateur.
Pour les couleurs
les malédictions est le module que vous souhaitez utiliser. Cochez cette tutoriel.
J'ai écrit un module qui gère les couleurs dans Linux/OSX/Windows. Il prend en charge toutes les 16 couleurs sur toutes les plates-formes, vous pouvez définir des couleurs d'arrière-plan à des moments différents, et la chaîne des objets produisent des résultats valides pour des choses comme len() et .capitalize().
https://github.com/Robpol86/colorclass
J'ai écrit un module simple, disponible sur:
http://pypi.python.org/pypi/colorconsole
Il fonctionne avec Windows, Mac OS X et Linux.
Il utilise la norme ANSI pour Linux et Mac, mais natif des appels aux fonctions de la console de Windows.
Vous avez des couleurs, positionnement du curseur ou le clavier. Ce n'est pas un remplacement pour les malédictions, mais peut être très utile si vous devez utiliser des scripts simples ou ASCII jeux.
Utilisation pyfancy c'est une façon simple de faire de la couleur dans le terminal!
Exemple:
Vous pouvez utiliser le shell de caractères d'échappement, qui sont disponibles à partir de n'importe quelle langue.
Ces échapper les caractères de début avec le caractère ESC suivie par un certain nombre d'arguments.
Par exemple à la sortie d'un rouge
Hello world
chaîne dans votre terminal:Ou à partir d'un script python:
Aussi, j'ai écrit un article sur Les séquences d'échappement qui peut probablement vous aider à obtenir une meilleure compréhension de ce mécanisme. J'espère que ça va vous aider.
\e
séquence d'échappement. Tout simplement parce que certainsecho
implémentations de soutien, il ne fait pas de ces séquences universellement disponible.\e
ne fait pas partie de la spécification POSIX pourecho
, de sorte qu'il n'est pas universel, il y soit. GNU coreutils version prend en charge, mais pas celui utilisé sur OS X (une variante BSD). Dernier mais non le moins, la séquence est ce n'est pas une fonction de coque, il est spécifique à laecho
de commande.Pour remédier à ce problème, j'ai créé un état d'esprit numbingly package simple pour imprimer des chaînes par interpolation des codes de couleur, appelé icolor.
icolor comprend deux fonctions:
cformat
etcprint
, dont chacun prend une chaîne en sous-chaînes qui sont interpolées à la carte à des séquences d'échappement ANSI par exempleToutes les couleurs ANSI sont inclus (par ex.
#RED;
,#BLUE;
, etc.), ainsi que#RESET;
,#BOLD;
et autres.Couleurs d'arrière-plan ont une
x
préfixe, donc un fond vert serait#xGREEN;
.On peut y échapper
#
avec##
.Compte tenu de sa simplicité, la meilleure documentation est probablement le code lui-même.
Il est sur PYPI, on peut donc
sudo easy_install icolor
.Mes deux cents (PyColorTerm):
Installation:
Script Python:
"OK!" montre en vert.
Je suis débutant en python et je suis excité à chaque fois je découvre des sujets, comme celui-ci. Mais cette fois(du coup) j'ai l'impression que quoi dire. Surtout parce que il ya quelques minutes, j'ai découvert WOW chose en python(au moins pour moi):
Contexte Gestionnaires
EXEMPLE
ou tout simplement comme ceci: