gpt4 book ai didi

python - 如何从 Python subprocess.check_output() 捕获异常输出?

转载 作者:IT老高 更新时间:2023-10-28 20:34:50 33 4
gpt4 key购买 nike

我正在尝试从 Python 中进行比特币支付。在 bash 中,我通常会这样做:

bitcoin sendtoaddress <bitcoin address> <amount>

例如:

bitcoin sendtoaddress 1HoCUcbK9RbVnuaGQwiyaJGGAG6xrTPC9y 1.4214

如果成功,我会得到一个交易 ID 作为输出,但如果我尝试转移一个大于我的比特币余额的金额,我会得到以下输出:

error: {"code":-4,"message":"Insufficient funds"}

在我的 Python 程序中,我现在尝试按如下方式付款:

import subprocess

try:
output = subprocess.check_output(['bitcoin', 'sendtoaddress', address, str(amount)])
except:
print "Unexpected error:", sys.exc_info()

如果有足够的余额,它可以正常工作,但如果没有足够的余额,sys.exc_info() 会打印出来:

(<class 'subprocess.CalledProcessError'>, CalledProcessError(), <traceback object at 0x7f339599ac68>)

它不包括我在命令行上遇到的错误。所以我的问题是;如何从 Python 中获取输出的错误({"code":-4,"message":"Insufficient fund"})?

最佳答案

根据subprocess.check_output() docs ,错误引发的异常有 output可用于访问错误详细信息的属性:

try:
subprocess.check_output(...)
except subprocess.CalledProcessError as e:
print(e.output)

然后您应该能够分析此字符串并使用 json 模块解析错误详细信息:

if e.output.startswith('error: {'):
error = json.loads(e.output[7:]) # Skip "error: "
print(error['code'])
print(error['message'])

关于python - 如何从 Python subprocess.check_output() 捕获异常输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24849998/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com