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