Python функция compile (): получить номер строки и последнее сообщение об ошибке - PullRequest
1 голос
/ 09 мая 2020

Я использую функцию компиляции для компиляции строки python. Как мне прочитать последнюю сводку ошибок компиляции, а также номер строки ошибки.

pystr = '''
print('abc')
print(abc)
'''
try:
  compile(pystr, '', 'eval')
except Exception as e:
  #print(e)
  print(sys.exc_info())

######outputs##############
(<class 'SyntaxError'>, SyntaxError('invalid syntax', ('', 3, 'print(abc)\n')), <traceback object at 0x02BB7120>)

# I would need 1) last error message - 'SyntaxError: invalid syntax', 2) line number '3'.

1 Ответ

0 голосов
/ 13 мая 2020

Мы можем использовать приведенный ниже код для чтения всего содержимого объекта e. Там мы найдем несколько атрибутов с подробностями об ошибке:

pystr = '''
print('abc')
print(abc)
'''
try:
    compile(pystr, '', 'eval')
except Exception as e:

    # print all attributes
    for attr in dir(e):
        print("e.%s = %r" % (attr, getattr(e, attr)))

    #useful attributes:
    print(e.lineno)
    print(e.msg)
    print(e.text)
...