Python 尝试例外情况除外<;变量>;

Python 尝试例外情况除外<;变量>;,python,json,exception,try-except,extract-error-message,Python,Json,Exception,Try Except,Extract Error Message,当抛出错误时,如何获取返回的整个对象,而不仅仅是“error\u message”值?(详情如下) 我目前正在使用,并试图从为某个API调用引发错误时返回的对象中提取数据。我正在使用Python 3.6。 在调用成功的情况下,我可以简单地将调用直接分配给变量并返回对象 例如: try: data = block_io.withdraw_from_labels(amounts='AMOUNT1,AMOUNT2,...', from_labels='LABEL1,LABEL2,...', to

当抛出错误时,如何获取返回的整个对象,而不仅仅是“error\u message”值?(详情如下)

我目前正在使用,并试图从为某个API调用引发错误时返回的对象中提取数据。我正在使用Python 3.6。

在调用成功的情况下,我可以简单地将调用直接分配给变量并返回对象

例如:

try:
   data = block_io.withdraw_from_labels(amounts='AMOUNT1,AMOUNT2,...', from_labels='LABEL1,LABEL2,...', to_addresses='ADDRESS1,ADDRESS2,...')
   print(data)
如果成功,将返回以下内容:

{
  "status" : "success",
  "data" : {
    "reference_id" : "<data>",
    "more_signatures_needed" : true,
    "inputs" : [
      {
        "input_no" : 0,
        "signatures_needed" : 1,
        "data_to_sign" : "<data>",
        "signers" : [
          {
            "signer_address" : "<data>",
            "signer_public_key" : "<data>",
            "signed_data" : null
          }
        ]
      }
    ],
    "encrypted_passphrase" : {
      "signer_address" : "<data>",
      "signer_public_key" : "<data>",
      "passphrase" : "<data>"
    }
  }
}
'Cannot withdraw funds without Network Fee of 0.00000000 DOGE. Maximum withdrawable balance is 0.00000000 DOGE.'
并将此返回:

{
  "status" : "success",
  "data" : {
    "reference_id" : "<data>",
    "more_signatures_needed" : true,
    "inputs" : [
      {
        "input_no" : 0,
        "signatures_needed" : 1,
        "data_to_sign" : "<data>",
        "signers" : [
          {
            "signer_address" : "<data>",
            "signer_public_key" : "<data>",
            "signed_data" : null
          }
        ]
      }
    ],
    "encrypted_passphrase" : {
      "signer_address" : "<data>",
      "signer_public_key" : "<data>",
      "passphrase" : "<data>"
    }
  }
}
'Cannot withdraw funds without Network Fee of 0.00000000 DOGE. Maximum withdrawable balance is 0.00000000 DOGE.'

挑战 最后一条消息直接取自
“status”:“fail”
对象,如下所示。我可以通过将API调用作为cURL而不是使用pythonapi文档来获得这个完整的对象。该对象看起来像:

{
  "status" : "fail",
  "data" : {
    "error_message" : "Cannot withdraw funds without Network Fee of 0.00000000 DOGE. Maximum withdrawable balance is 0.00000000 DOGE.",
    "available_balance" : "0.00000000",
    "max_withdrawal_available" : "0.00000000",
    "minimum_balance_needed" : "10.00000000",
    "estimated_network_fee" : "0.00000000"
  }
}
问题在于:

except Exception as myVariable:
仅将
“错误消息”
键中的值分配给
myVariable

我的问题是,如果在出现故障的情况下(即
数据=
不起作用),我似乎无法在python中分配该调用的结果,那么我如何访问该对象中的其他键?在
中,除了
之外,我似乎只能访问
错误消息“
键中的值

理想情况下,我希望以某种方式访问
“status:“fail”
场景下的整个对象


(p.s.Github上的整个项目。)

myVariable
包含一个异常对象,在您尝试打印消息时仅显示该消息。请尝试在调试器中检查
myVariable
的值,或打印
dir(myVariable)
查看您所需的信息是否可能已经存在于异常对象中。您无法访问其他密钥。如果出现故障,将引发BlockIoAPIError,您所得到的只是响应中的错误消息。只有在事务成功的情况下,响应本身才会传回给您。它发生在
api\u cal中l
方法在页面底部。@user4815162342不,它只是一个带有错误消息字符串的元组和一个
\u len\u
attribute@shmee啊,是的,我看到了。嗯,这不符合我的要求。看起来我现在唯一的选择是在python库之外进行调用,也许从那里提取键/值。听起来类似于对库的一个伟大的功能请求。在异常对象中作为一个单独的属性提供剩余的数据似乎非常简单。