如何从subprocess.run返回的JSON输出中提取id字段值
实现方案
你拿到的output.stdout是字符串格式的JSON内容,直接用Python内置的json模块把它转成字典,就能通过键名直接读取id字段的值,不需要装任何第三方库。
修改后的可运行代码
import subprocess import json # 引入Python内置的JSON处理模块 import_json_names = 'fileb://xxx/yyyy.json' output = subprocess.run( ['aws', 'apigateway', 'import-rest-api', '--body', f'{import_json_names}', '--profile', 'xxxx'], capture_output=True, text=True, check=True ) # 将JSON格式的字符串解析为Python字典 api_detail = json.loads(output.stdout) # 读取id字段对应的值 api_id = api_detail["id"] print(api_id)
执行上述代码后,会直接输出你需要的id值:123abc444
补充说明
- 你之前定义的
finaloutput中间变量不是必须的,解析时直接传入output.stdout即可 - 代码里已经加了
check=True参数,只要AWS CLI命令执行不报错,返回的stdout一定是合法JSON结构,正常解析不会出错;如果需要兼容命令执行失败的场景,可以在外层加try/except做异常捕获 - 不要用正则匹配、字符串切片的方式提取id,这类写法非常脆弱,只要返回的JSON排版、字段顺序有调整就会失效,用标准JSON解析是稳定性最高的方案。
内容的提问来源于stack exchange,提问作者Udhayakumar
相关产品推荐
相关产品推荐

