Utilisez Pygments
pour rendre la trace de pile un peu plus belle.
sample_code.py
def funcA():
funcB()
def funcB():
funcC()
def fucnC():
1/0 # error!
funcA()
↓ Ça ressemble à ça quand c'est brut
Traceback (most recent call last):
File "test.py", line 10, in <module>
funcA()
File "test.py", line 2, in funcA
funcB()
File "test.py", line 5, in funcB
funcC()
NameError: name 'funcC' is not defined
↓ Je veux le rendre aussi beau que ça
Traceback (most recent call last):
File "test.py", line 10, in <module>
funcA()
File "test.py", line 2, in funcA
funcB()
File "test.py", line 5, in funcB
funcC()
NameError: name 'funcC' is not defined
Soit pip
, ʻeasy_install ou
port`.
pip install Pygments
Utilisez sys.excepthook
.
coloring.py
import sys
def myexcepthook(type, value, tb):
import traceback
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import TerminalFormatter
tbtext = ''.join(traceback.format_exception(type, value, tb))
lexer = get_lexer_by_name("pytb", stripall=True)
formatter = TerminalFormatter()
sys.stderr.write(highlight(tbtext, lexer, formatter))
sys.excepthook = myexcepthook
Référence: Coloration des exceptions de Python sur un terminal
Pour le moment, les chaînes de caractères et les valeurs numériques de la trace de pile en sortie seront colorées.
C'est un problème d'ajouter ce qui précède à tout le code, alors faisons-le vous-même. _ (Cela peut conduire à des bogues incompréhensibles, c'est donc une bonne idée de comprendre ce que vous faites avant d'essayer.) _
Utilisez ʻutilisateur personnaliser`. Référence: 16.1.4. Modules de personnalisation
Créez ʻusercustomize.py dans le répertoire généré par
python -c "import site; print (site.getusersitepackages ())" ʻet écrivez le code ci-dessus coloration.py
et vous avez terminé.
La sensation de l'essayer et la facilité de compréhension ne changent pas beaucoup! !!
Recommended Posts