Colorez les erreurs Python (traces de pile) pour les rendre plus faciles à comprendre

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

1. Installez Pygments

Soit pip, ʻeasy_install ou port`.

pip install Pygments

2. Ajoutez ce qui suit au début du code Python

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.

(Développement) 3. Exécuter automatiquement le code ci-dessus lors de l'exécution du code Python

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é.

Impressions

La sensation de l'essayer et la facilité de compréhension ne changent pas beaucoup! !!

Recommended Posts

Colorez les erreurs Python (traces de pile) pour les rendre plus faciles à comprendre
Facilitez la compréhension de l'affichage des exceptions du module Python
Conseils pour faciliter la lecture des documents d'audition Python
Essayez de comprendre Python soi
Vous qui coloriez le journal pour le rendre plus facile à voir
Rejoignez CSV normalisé par les pandas Python pour faciliter la vérification
Remarque: Améliorez les invites ennuyeuses pour les rendre plus faciles à lire. // Changement d'invite Linux
Faciliter l'utilisation de la fonction clic de SikuliX
[Python] Comment rendre une classe itérable
Sortir les caractères de couleur en joli avec python
Fractal pour faire et jouer avec Python
Facilitez la soumission de pypy avec atcoder-cli (python)
[Python] pandas à bien comprendre en 10 minutes
10 erreurs Python communes aux débutants
[Python] Comprendre comment utiliser les fonctions récursives