尝试。。例外情况除外,如<variable>

2024-04-23 23:06:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我目前正在使用block.io API,试图从为某个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>"
    }
  }
}

但如果成功,除外,将继续情况

except Exception as myVariable:
   print(myVariable)

把这个还给我:

'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:

只将"error_message"键中的值赋给myVariable。你知道吗

我的问题是,如果在失败的情况下(即data = <pythonic api call>不起作用),而在except内,我似乎只能访问"error_message"键的值,那么我如何访问该对象中的其他键呢?你知道吗

理想情况下,我希望以某种方式访问"status: "fail"场景下的整个对象。你知道吗

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


Tags: 对象apimessagedatastatus情况errorfail