Cómo obtener detalles de excepción en Python3

Quiero obtener detalles de Exception en Python3

por ejemplo … en foo.py

import sys try: {}.encode('utf8') except: err = sys.exc_info()[0] print("itself\t", err) print(".args\t", err.args) print("dir\t", dir(err.args)) print("type\t", type(err.args)) print("vars\t", vars(err)) print("--------k,v in vars---------") for k,v in vars(err).items(): print(k) print(v) 

y stdout es …

 itself  .args  dir ['__class__', '__delattr__', '__delete__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__name__', '__ne__', '__new__', '__objclass__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__set__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] type  vars {'__init__': , '__doc__': 'Attribute not found.', '__new__': } --------k,v in vars--------- __init__  __doc__ Attribute not found. __new__  

Quiero más información de esto construido en la clase Exception de la instancia “err”,

como

  • ARCHIVO: foo.py
  • LINEA: 4
  • MENSAJE: el objeto ‘dict’ no tiene atributo ‘codificar’

al igual que stdout de este código

 {}.encode('utf8') 

esta

 Traceback (most recent call last): File "foo.py", line 2, in  {}.encode('utf8') AttributeError: 'dict' object has no attribute 'encode' 

Utilice el módulo de traceback para imprimir los tracebacks desde su posición actual o para una excepción determinada.

No indica qué salida está esperando, pero lo más probable es que el módulo de traceback sea ​​capaz de producir la salida que mejor se adapte a sus necesidades, sean las que sean.