python - 无法获取 json 键值
问题描述
我在下面有一个 python 代码来获取 json 键值,但我在下面。
import json
import datetime
import dateutil
import time
import os
secret = os.system("aws secretsmanager get-secret-value --secret-id stage_secret --query SecretString --output text")
print(secret)
data = (secret["username"])
print(data)
的输出secret
是{"username":"user1","password":"psswd@123"}
我想提取 and 的值username
并将password
其存储在一个变量中,但是我遇到了错误
Traceback (most recent call last):
File "test.py", line 9, in <module>
data = (secret["username"])
TypeError: 'int' object has no attribute '__getitem__'
请帮助实现相同的目标
Python Version Python 2.7.5
解决方案
秘密的输出是......
不,不是。如果您参考os.system()
文档,结果是命令的退出代码,它是一个 int。
如果要捕获输出,请使用subprocess
模块
import subprocess
import json
secret_id = "stage_secret" # do NOT store this in your source code
output_mode = "text"
output = subprocess.check_output(["aws", "secretsmanager" , "get-secret-value", "--secret-id", secret_id, "--query", "SecretString", "--output", output_mode])
data = json.loads(output.strip())
print(data['username'])
但是,你真的应该考虑使用boto3
推荐阅读
- c++ - 是否可以让 Clang 静态分析器了解引用计数?
- openssl - 自签名证书的随机数错误
- html - Safari 错误溢出-x 隐藏滚动条错误
- python - 将计算字段列添加到 pandas 多级列数据透视表
- php - 从 InsertPHP 插件调用主题动作
- android-studio - 尝试在 Android Studio 中编译代码时出现 Google API gradle 错误
- c# - 在不同的 .NET 平台(UWP、.Net Core)之间共享代码和类
- ruby-on-rails - 表条目在开发中工作正常,但在生产中不行
- angular - 如何在 angular-cli 编译器中使用“url-loader”
- postgresql - 删除并重新创建数据库时重新创建删除的 postgres 表