Neu bei Python. Ich möchte meinen Code in main zum Zweck der Fehlersuche stoppen. Ich benutze das Logging-Modul, um den Variablenwert zu drucken, den ich untersuchen möchte.python sys.exit: eine Ganzzahl ist erforderlich (hat Typ str)?
Allerdings erhöht es Fehler. Nicht sicher, wie man es löst. Ich frage mich auch, mit sys.exit anstelle der Einrichtung Debugging-Punkt ist der richtige Weg, nur einen kleinen Teil des Codes zu laufen. Meine Hauptsache ist lang und ich möchte nicht jedes Mal die ganze Sache laufen lassen.
import linecache
import logging
import sys
import pandas as pd
def print_exception():
exc_type, exc_obj, tb = sys.exc_info()
f = tb.tb_frame
lineno = tb.tb_lineno
filename = f.f_code.co_filename
linecache.checkcache(filename)
line = linecache.getline(filename, lineno, f.f_globals)
print('EXCEPTION IN ({}, LINE {} "{}"): {}'.format(filename, lineno, line.strip(), exc_obj))
if __name__ == "__main__":
try:
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
df = pd.DataFrame({'A': [0, -1, 3, 5, 4, 2, 1],
'B': [12, 12, 14, 15, 14, 16, 200]})
sys.exit('error')
except:
print_exception()
EXCEPTION IN (<ipython-input-9-f42a2adee11e>, LINE 49 "sys.exit('error')"): an integer is required (got type str)
Updates: Ich habe den vollständigen Code aktualisiert. Ich bin auf Python3 mit Pycharm.
Ich denke nicht, dass dies so trivial ist, wie andere es ausstellen. OPs Verwendung von sys.exit stimmt mit den Dokumenten überein. – Karin
@wim Dieser Code funktioniert in Python 2.7.8 einwandfrei und ist konsistent mit der sys.exit() - Dokumentation. Ich vermute, dass es irgendwo ein Kontextproblem gibt, das nicht in diesem Code enthalten ist (da es offensichtlich nicht 49 Zeilen lang ist). – Lost
@Karin Ich stimme zu, ich denke, die Leute nehmen den Fehler bei bareval, aber etwas anderes geht weiter, da diese Verwendung für mich auf Linux und Windows in einem schnellen Test funktionierte und die Dokumentation konsistent ist. Habe Python 3 noch nicht probiert – Lost