Färben Sie Python-Fehler (Stapelspuren), um sie verständlicher zu machen

Verwenden Sie "Pylements", um die Stapelspur etwas schöner zu machen.

sample_code.py


def funcA():
  funcB()

def funcB():
  funcC()

def fucnC():
  1/0  # error!

funcA()

↓ Es sieht so aus, wenn es roh ist

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

↓ Ich möchte es so schön machen

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. Installieren Sie Pylements

Ob es sich um "pip", "easy_install" oder "port" handelt.

pip install Pygments

2. Fügen Sie am Anfang des Python-Codes Folgendes hinzu

Verwenden Sie 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

Referenz: Ausnahmen von Python auf einem Terminal einfärben

Vorerst werden die Zeichenfolgen und numerischen Werte der von diesem ausgegebenen Stapelverfolgung farbig.

(Entwicklung) 3. Führen Sie den obigen Code automatisch aus, wenn Sie Python-Code ausführen

Es ist mühsam, das Obige dem gesamten Code hinzuzufügen, also machen wir es selbst. _ (Es kann zu unverständlichen Fehlern führen, daher ist es eine gute Idee, zu verstehen, was Sie tun, bevor Sie es versuchen.) _

Verwenden Sie "usercustomize". Referenz: 16.1.4. Anpassungsmodule

Erstellen Sie "usercustomize.py" in dem Verzeichnis, das von "python -c" import site; print (site.getusersitepackages ()) "ausgegeben wird, und schreiben Sie den obigen Code" coloring.py ". Fertig.

Impressionen

Das Gefühl, es zu versuchen und die Leichtigkeit des Verstehens ändern sich nicht viel! !!

Recommended Posts

Färben Sie Python-Fehler (Stapelspuren), um sie verständlicher zu machen
Erleichtern Sie die Anzeige von Python-Modulausnahmen
Tipps, um das Lesen von Python-Hördokumenten zu vereinfachen
Versuchen Sie, Python selbst zu verstehen
Sie, die das Protokoll ausmalen, um es besser sehen zu können
Schließen Sie sich csv an, das von Python-Pandas normalisiert wurde, um die Überprüfung zu vereinfachen
Hinweis: Verbesserte nervige Eingabeaufforderungen, um das Lesen zu erleichtern. // Linux-Eingabeaufforderung ändern
Vereinfachen Sie die Verwendung der Klickfunktion von SikuliX
[Python] Wie man eine Klasse iterierbar macht
Geben Sie Farbzeichen mit Python zu hübsch aus
Fraktal zum Erstellen und Spielen mit Python
Erleichtern Sie die Einreichung von Pypys mit atcoder-cli (Python)
[Python] Pandas in 10 Minuten vollständig zu verstehen
10 Python-Fehler, die Anfängern häufig sind
[Python] Verstehen, wie rekursive Funktionen verwendet werden