Bonjour, je pense qu'il n'y a pas un module qui permet de transformer les erreurs en dict.
Exemples:
Je cherche à extraire la première ligne d'erreur rencontrée (3), le type d'erreur (ZeroDivisionError) puis le message d'erreur (division by zero)Code:
1
2
3
4 erreur1= 'Traceback (most recent call last):\r\n File \"<string>\", line 3, in <module>\r\nZeroDivisionError: division by zero\r\n' erreur2= 'Traceback (most recent call last):\r\n File \"<string>\", line 2, in <module>\r\n File \"<string>\", line 1, in f\r\n File \"<string>\", line 1, in f\r\n File \"<string>\", line 1, in f\r\n [Previous line repeated 996 more times]\r\nRecursionError: maximum recursion depth exceeded\r\n' erreur3='File \"<string>\", line 6\r\n y=0z\r\n ^\r\nSyntaxError: invalid syntax\r\n'
J'ai essayé les splits mais cela devient assez compliqué.
Les expressions régulières me gardent les "\r\n" ou line , j'ai essayé:
Code:
1
2
3
4
5
6
7
8
9 retour={'line':'','typeerror':'','message':''} erreur= 'Traceback (most recent call last):\r\n File \"<string>\", line 2, in <module>\r\n File \"<string>\", line 1, in f\r\n File \"<string>\", line 1, in f\r\n File \"<string>\", line 1, in f\r\n [Previous line repeated 996 more times]\r\nRecursionError: maximum recursion depth exceeded\r\n' result1=re.search("line \d+", erreur) if(result1):retour['line']=result1.group() result2=re.search("\r\n.*:", erreur) if(result2):retour['typeerror']=result2.group() result3=re.search(":.*\r\n", erreur) if(result3):retour['message']=result3.group()