¿Alguien tiene una idea, ¿por qué este 3.2 de código Pythonconversión de Excepción a una cadena en Python 3
try:
raise Exception('X')
except Exception as e:
print("Error {0}".format(str(e)))
obras sin problema (aparte de la codificación Unicode en Windows Shell: /), pero esto
try:
raise Exception('X')
except Exception as e:
print("Error {0}".format(str(e, encoding = 'utf-8')))
throws TypeError: coercing a str: necesita bytes, bytearray o un objeto tipo buffer, Excepción encontrada?
Cómo convertir un error en una cadena con codificación personalizada?
Editar
No funciona bien, si hay \ u2019 en el mensaje:
try:
raise Exception(msg)
except Exception as e:
b = bytes(str(e), encoding = 'utf-8')
print("Error {0}".format(str(b, encoding = 'utf-8')))
Pero ¿por qué no puede STR() convertir una excepción a nivel interno bytes?
¿Usted intentó 'str (e) .encode ('UTF-8')'? – agf
@agf Sí devuelve bytes en lugar de cadena.Puedo usarlo como reemplazo de bytes (str (e), encoding = 'utf-8'), pero siempre tengo que hacer la segunda conversión bytes => str –
"why can not str() convert to bytes" - cómo sería saber a qué codificación convertir? Además, su nuevo código es equivalente a .format (str (e)) – hamstergene