Новое для python. Я хочу остановить мой код в основном для цели отладки. Я использую модуль регистрации для печати значения переменной, которое я хотел бы проверить.python sys.exit: требуется целое число (получен тип str)?
Однако это вызывает ошибку. Не знаете, как его решить. Мне также интересно использовать sys.exit вместо настройки точки отладки - это правильный способ запускать только небольшую часть кода. Мой главный длинный, и я не хочу каждый раз запускать все это.
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)
Обновления: Я обновил полный код. Я нахожусь на python3 с Pycharm.
Я не думаю, что это так же тривиально, как другие делают это. Использование OP sys.exit в OP соответствует документам. – Karin
@wim этот код отлично работает на Python 2.7.8 и согласуется с документацией sys.exit(). Я подозреваю, что есть проблема контекста где-то, что нет в этом коде (поскольку, очевидно, это не 49 строк). – Lost
@Karin Я согласен, я думаю, что люди берут ошибку за чистую монету, но что-то происходит, так как это использование отлично работает для меня как в Linux, так и в окнах в быстром тестировании и соответствует документации. Не пробовал Python 3 еще – Lost