2017-07-14 1 views
0

Dans mon code python, je suis interceptant une exception spécifique en utilisantVérifier valeur spécifique/chaîne dans args d'exception python

except requests.HTTPError as ex: 

impression ex.args tableau suivant illustre les données

{"code":400,"status":"Bad Request","timestamp":"2017-07-14T12:42:41+05:30", 
"message":"Can not cancel order - 123123123123123", 
"error":{"name":"Error","reason":"Can not cancel order - 170714000048253"}} 

Est-ce ex .args un dictionnaire ou une chaîne? Je veux vérifier des valeurs spécifiques comme le code et le message une fois que l'exception est soulevée. Comment puis-je le faire de la meilleure façon?

Répondre

1

ex.args retours tuple avec JSON d'erreur, vous pouvez analyser et utiliser comme ceci:

import json 

data = json.loads(ex.args[0]) 

print(data['code']) 
+0

Je suis une erreur pour json.loads 'retraçage (appel le plus récent en dernier): errorJson = json.loads (ex.args) Fichier "C: \ Python35-32 \ lib \ json \ __ init__.py", ligne 312, dans les charges s .__ classe __.__ nom__)) TypeError: l'objet JSON doit être str, et non 'tuple '' –

+1

si' ex.args' renvoie un tuple, alors vous devez obtenir un message de chaîne de ce tuple que vous avez posté dans votre question. –

+0

oui. C'était un tuple et en a extrait le json. Merci. Pouvez-vous éditer votre première réponse pour que je puisse la révoquer? –